>>> from nltk import word_tokenize, ne_chunk, pos_tag
>>> sent = "A survey of user opinion of computer system response time"
>>> chunked = ne_chunk(pos_tag(word_tokenize(sent)))
>>> for i in chunked:
... print i
...
('A', 'DT')
('survey', 'NN')
('of', 'IN')
('user', 'NN')
('opinion', 'NN')
('of', 'IN')
('computer', 'NN')
('system', 'NN')
('response', 'NN')
('time', 'NN')
你正在寻找的技术被称为来自语言学和计算机的多个子领域或子领域的多个名称。在
我将举一个NLTK中的NE chunker示例:
使用命名实体:
^{pr2}$你可以看到它有很多缺陷,我想总比没有好。在
术语提取
这里有一些工具
现在回到OP的问题上来。在
问:NLTK能否将“计算机系统”作为一个短语提取出来?
A:不是真的
如上所示,NLTK有预先训练过的chunker,但它适用于名称实体,即使如此,并不是所有命名实体都能被很好地识别。在
也许OP可以尝试更激进的想法,让我们假设一系列的名词总是组成一个短语:
因此,即使有了这个解决方案,想要单独获得“计算机系统”似乎也很困难。 但是,如果你想一想,“计算机系统响应时间”是比“计算机系统”更有效的短语。在
难道所有关于计算机系统响应时间的解释都是有效的:
还有更多可能的解释。所以你要问,你用提取出来的短语做什么,然后看看如何减少像“计算机系统响应时间”这样的长短语。在
相关问题 更多 >
编程相关推荐