php - 产生真实单词的词干提取算法

标签 php nlp stemming snowball porter-stemmer

我需要提取一段文本并从中提取“标签”列表。其中大部分是非常直接的。但是,我现在需要一些帮助来阻止生成的单词列表以避免重复。示例:社区/社区

我使用了 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 等特殊词形的知识。输入词形到它的引理,保证是一个“真实”的词。

英语有很多词形还原器,不过我只使用过 morphaMorpha 只是一个大的 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/

相关文章:

haskell - 管道:多个流消费者

python - NLTK CorpusReader 一次标记一个文件

java - 在 Lucene 中关闭词干提取

javascript - 使用 PHP 创建动态过滤器列表 使用 JS 搜索它们

php - 对一个模型使用 2 个查询或 1 个查询并将其转为数组方法以获取其他查询

php - 使用 PHP+MySQL 成功插入后立即插入附加值

php - curl上传多个php ://memory files?

nlp - 有没有包含多个答案的 NLP 问答数据集?

java - 逻辑缺陷: if List<String> is null return input else print function output

search - 一个词短语搜索,以避免在 Solr 中出现词干