NLTK提取chunker解析树的术语
现在约翰爱德华格雷开始跑步 ,他知道他很胖
她是听由可怕的歌手 嫌那
我想从句子中提取有趣的术语。 我目前使用POS标记来识别每个实体的语法类型。 然后我将每个标记更新到一个计数器(对于名词,动词和形容词使用不同的权重)。
我现在希望为此使用一个chunker。 我认为分析树的叶节点包含所有有趣的单词和短语 。 我如何从chunker输出中提取术语?
在语言学中,“有趣的单词”被称为open class words
。 而你所指的任务并不是真正的分块/解析任务。 您正在寻找某种tagger / annotator / labeller来标记每个单词以查看它是否“有趣”。
序列标签
如果你将你的任务作为一个序列标签任务来处理,那么John Edward Grey started running now that he knows he is fat
的一句话John Edward Grey started running now that he knows he is fat
就会被标记为:
[('John','B'),('Edward','I'),('Grey','I'),('started','O'),('running','B'),
('now','O'),('that','O'),('he','O'),('knows','O'),('he','O'),
('is','O'),('fat','B')]
所以任何用B
标记的东西都意味着你的“有趣”块的开始
随后用O
标记的单词将成为“有趣”的块或结尾
它也可以结束于随后的B
来标记前一个“有趣”块的结束和新“有趣”块的开始。
什么有趣或没有?
其实有趣与否取决于你的任务最终目标是什么,对我而言,我会说started running
是一个“有趣”的块,因为它开始修改不定词的含义或running
,使其成为一种begin action
形式。
封闭课堂与开放课堂单词
如果你记住什么是无趣的单词,那么我建议你建立一个字典,然后运行一个序列标签脚本来检测那些不在封闭类词典中的字典。
机器学习方法
另一种方法是执行机器学习分类任务,其中您已经预先注释了哪些有趣和什么不是什么的样本数据。 然后,您将识别一些分类功能并运行分类以使用B
, I
, O
标签自动标记数据。
上一篇: NLTK extracting terms of chunker parse tree
下一篇: Combining a Tokenizer into a Grammar and Parser with NLTK