在文本

时间:2017-05-05 06:41:30

标签: python nlp nltk text-mining information-extraction

假设我有一个自由文本,其中包含有关特定汽车,汽车品牌和其他自动化相关信息的信息。我想从特定模板后面的文本中提取此信息:

  • 品牌:
  • 型号:
  • 颜色

例如:“迈克和其他四个人一起乘坐黑色梅赛德斯。此外,他还在欧洲拥有一辆宝马M3。”

模板1:品牌:梅赛德斯,型号: - ,颜色:黑色

模板2:品牌:宝马,型号:M3,颜色: -

在Python中解决这个问题的最佳方法是什么?虽然我对NLTK,POS标记和NP分块有一些了解,但我认为一旦我能够识别特定术语(例如包含列表的(嵌套)字典),我就可以更容易地完成。因此,它的行为就像一个受控的词汇。

希望有人有一个很好的例子,或者可以指出我正确的方向。感谢

1 个答案:

答案 0 :(得分:1)

  

假设

     
    
        
  1. 你有一个这样的字典:
        品牌= ['梅赛德斯','宝马']
        型号= [' M3']
        颜色= ['黑色']
  2.     
  3. 三个关键词在文本中总是遵循以下顺序:
        颜色品牌模型
  4.        

使用您的示例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}]