我需要提取一段文本并从中提取“标签”列表。其中大部分是非常直接的。但是,我现在需要一些帮助来阻止生成的单词列表以避免重复。示例:社区/社区
我使用了 Porter Stemmer 算法的实现(顺便说一下,我是用 PHP 编写的):
http://tartarus.org/~martin/PorterStemmer/php.txt
这在一定程度上有效,但不会返回“真实”单词。上面的例子源于“commun”。
我尝试过“Snowball”(在另一个 Stack Overflow 线程中建议)。
http://snowball.tartarus.org/demo.php
对于我的示例(社区/社区),Snowball 源于“communiti”。
问题
还有其他的词干算法可以做到这一点吗?其他人解决了这个问题吗?
我目前的想法是,我可以使用词干算法来避免重复,然后选择我遇到的最短单词作为要显示的实际单词。
最佳答案
如果我理解正确,那么您需要的不是词干分析器,而是词形还原器。 Lemmatizer 是一种工具,它具有关于 -ies、-ed 等结尾以及 written 等特殊词形的知识。输入词形到它的引理,保证是一个“真实”的词。
英语有很多词形还原器,不过我只使用过 morpha
。
Morpha 只是一个大的 lex 文件,您可以将其编译成可执行文件。
使用示例:
$ cat test.txt
Community
Communities
$ cat test.txt | ./morpha -uc
Community
Community
你可以从http://www.informatics.sussex.ac.uk/research/groups/nlp/carroll/morph.html获得吗啡
关于php - 产生真实单词的词干提取算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190775/