假设我有一个自由文本,其中包含有关特定汽车,汽车品牌和其他自动化相关信息的信息。我想从特定模板后面的文本中提取此信息:
例如:“迈克和其他四个人一起乘坐黑色梅赛德斯。此外,他还在欧洲拥有一辆宝马M3。”
模板1:品牌:梅赛德斯,型号: - ,颜色:黑色
模板2:品牌:宝马,型号:M3,颜色: -
在Python中解决这个问题的最佳方法是什么?虽然我对NLTK,POS标记和NP分块有一些了解,但我认为一旦我能够识别特定术语(例如包含列表的(嵌套)字典),我就可以更容易地完成。因此,它的行为就像一个受控的词汇。
希望有人有一个很好的例子,或者可以指出我正确的方向。感谢
答案 0 :(得分:1)
假设:
- 你有一个这样的字典:
品牌= ['梅赛德斯','宝马']
型号= [' M3']
颜色= ['黑色']- 三个关键词在文本中总是遵循以下顺序:
醇>
颜色品牌模型
使用您的示例text
,我得到以下结果:
words = text.split(' ')
templates = []
for i, word in enumerate(words):
if word in Brand:
template = {'Brand': None, 'Model': None, 'Color': None}
template['Brand'] = word
if words[i-1] in Color:
template['Color'] = words[i-1]
if words[i+1] in Model:
template['Model'] = words[i+1]
templates.append( template )
print(templates)
[{'Brand': 'Mercedes', 'Model': None, 'Color': 'black'}, {'Brand': 'BMW', 'Model': 'M3', 'Color': None}]