从动词列表中检索动词

2024-04-09

我有一个全是动词的字符串列表。我需要获取每个动词的词频,但我想将“想要”、“想要”、“想要”和“想要”等动词计为一个动词。形式上,“动词”被定义为 4 个单词的集合,其形式为 {X, Xs, Xed, Xing} 或形式为 {X, Xes, Xed, Xing},其中 X 是动词。我将如何从列表中提取动词,以便获得“X”以及词干出现的次数?我想我可以以某种方式使用正则表达式,但是我是正则表达式的新手,我完全迷失了。


有一个图书馆叫nltk http://nltk.org/它有一系列疯狂的文本处理函数。函数的子集之一是stemmers,这正是您想要的(使用由在该领域拥有丰富经验的人开发的算法/代码)。这是使用的结果波特词干 http://tartarus.org/martin/PorterStemmer/算法:

In [3]: import nltk

In [4]: verbs = ["want", "wants", "wanting", "wanted"]

In [5]: for verb in verbs:
   ...:     print nltk.stem.porter.PorterStemmer().stem_word(verb)
   ...:     
want
want
want
want

您可以将其与defaultdict做这样的事情(注意:在Python 2.7+中,aCounter同样有用/更好):

In [2]: from collections import defaultdict

In [3]: from nltk.stem.porter import PorterStemmer

In [4]: verbs = ["want", "wants", "wanting", "wanted", "running", "runs", "run"]

In [5]: freq = defaultdict(int)

In [6]: for verb in verbs:
   ...:     freq[PorterStemmer().stem_word(verb)] += 1
   ...:     

In [7]: freq
Out[7]: defaultdict(<type 'int'>, {'run': 3, 'want': 4})

需要注意的一件事:词干分析器并不完美 - 例如,添加ran上面的结果是这样的:

defaultdict(<type 'int'>, {'ran': 1, 'run': 3, 'want': 4})

但希望它能让你接近你想要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从动词列表中检索动词 的相关文章

随机推荐