使用NLP从文本中提取关联的值

时间:2014-12-15 15:39:34

标签: python nlp nltk

我想提取与测量单位相关联的红衣主教(CD)值并将其存储在字典中。例如,如果文本包含类似" 20 kgs"的标记,它应该提取它并将其保存在字典中。

示例:

  1. 对于输入文本,“10英寸煎锅提供极好的导热性和分布”,输出字典应如下所示,{"dimension":"10-inch"}

  2. 输入文字,"这个水桶装5升水。" ,输出应该是,{"volume": "5 litres"}

    line = 'This bucket holds 5 litres of water.'
    tokenized = nltk.word_tokenize(line)
    tagged = nltk.pos_tag(tokenized)
    
  3. 以上行将给出输出:

    [('This', 'DT'), ('bucket', 'NN'), ('holds', 'VBZ'), ('5', 'CD'), ('litres', 'NNS'), ('of', 'IN'), ('water', 'NN'), ('.', '.')]
    

    有没有办法从文本中提取CD和UOM值?

2 个答案:

答案 0 :(得分:2)

不确定您需要多么灵活的流程。你可以玩nltk.RegexParser并想出一些好的模式:

import nltk

sentence = 'This bucket holds 5 litres of water.'

parser = nltk.RegexpParser(
    """
    INDICATOR: {<CD><NNS>}
    """)

print parser.parse(nltk.pos_tag(nltk.word_tokenize(sentence)))

输出:

(S
  This/DT
  bucket/NN
  holds/VBZ
  (INDICATOR 5/CD litres/NNS)
  of/IN
  water/NN
  ./.)

您还可以创建语料库并训练分组。

答案 1 :(得分:1)

嗯,不确定它是否有帮助 - 但我是用Javascript写的。 这里: http://github.com/redaktor/nlp_compromise

它可能有点没有文档但是这些人现在正将它移植到2.0分支。

考虑到端口到python应该很容易 What's different between Python and Javascript regular expressions?

并且:你检查过蟒蛇NLTK了吗? :http://www.nltk.org