Python 使用NLP从文本中提取关联值
我想提取与度量单位相关联的基数(CD)值,并将其存储在字典中。例如,如果文本包含“20 kgs”之类的标记,则应将其提取并保存在字典中 例如:Python 使用NLP从文本中提取关联值,python,nlp,nltk,Python,Nlp,Nltk,我想提取与度量单位相关联的基数(CD)值,并将其存储在字典中。例如,如果文本包含“20 kgs”之类的标记,则应将其提取并保存在字典中 例如: 对于输入文本,“10英寸煎锅具有极好的导热性和分布性”,输出字典应类似于,{“尺寸”:“10英寸”} 对于输入文本,“此桶可容纳5升水”。输出应类似于,{“体积”:“5升”} 上述行将给出输出: [('This', 'DT'), ('bucket', 'NN'), ('holds', 'VBZ'), ('5', 'CD'), ('litres', 'N
{“尺寸”:“10英寸”}
{“体积”:“5升”}
[('This', 'DT'), ('bucket', 'NN'), ('holds', 'VBZ'), ('5', 'CD'), ('litres', 'NNS'), ('of', 'IN'), ('water', 'NN'), ('.', '.')]
是否有从文本中提取CD和UOM值的方法?不确定该过程需要多大的灵活性。您可以使用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)))
您还可以创建一个语料库并训练一个chunker。Hm,不确定它是否有用——但我是用Javascript编写的。 在这里: 它可能有点没有文档化,但是现在他们正在将它移植到一个2.0分支上 移植到python应该很容易
还有:你查过蟒蛇NLTK吗 您是否尝试使用
斯坦福nlp
?任何POS标记器都应该非常准确地标记CD,并且从单位到标签集的固定映射可能会捕获大多数实例。我倾向于回避手工构建固定词典,但这似乎是一个应用程序,您可以通过一个简单的列表获得相当好的覆盖率。例如,给出您的示例“lit(er | re)(s?)”->“volume”、“inch(es)”->“dimension”(或者“length”)。您必须处理一些更复杂的情况,如“平方米”或“in^3”,并且会有一些不明确的引用(例如,“knots”既是长度又是速度)。但这些应该是罕见的。@Kasra:我应该在斯坦福nlp中引用任何具体的解决方案吗?@Dork据我所知,斯坦福nlp用于特殊标记,例如提取特殊名称或,我不确定它是否能帮助您,但我建议搜索与您的问题相关的内容!:是否有一种内置方法可以在词性标记后将文本与标记分开?Javascript库很好,我将尝试更多的方法。关于nltk这本书,我尝试的示例代码是这本书的一部分。
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
./.)