【问题标题】:How to find all the related keywords for a root word?如何找到一个词根的所有相关关键词?
【发布时间】:2020-01-23 17:40:58
【问题描述】:

我正在尝试找出一种方法来找到来自同一个词根的所有关键字(在某种意义上与词干相反的作用)。目前,我正在使用 R 进行编码,但如果有帮助,我愿意切换到其他语言。

例如,我有词根“rent”,我希望能够找到“renting”、“renter”、“rental”、“rents”等。

【问题讨论】:

  • 对于简单的情况grepl("rent", c("renting", "renter", "rental", "rents", "apple")) 可能有效。
  • 您还可以查看诸如 Levenshtein Distance 之类的东西,它衡量单词的相似度。

标签: r nlp stemming


【解决方案1】:

在 python 中试试这个代码:

from pattern.en import lexeme
print(lexeme("rent")

生成的输出是:

安装
点安装模式
点安装 nltk
现在,打开一个终端,输入 python 并运行以下代码。

import nltk
nltk.download(["wordnet","wordnet_ic","sentiwordnet"])

安装完成后,再次运行模式代码。

【讨论】:

    【解决方案2】:

    你想找到词干的反面,但词干可以成为你的方式。

    看看这个 Python 中的例子:

    from nltk.stem.porter import PorterStemmer
    
    stemmer = PorterStemmer()
    words = ["renting", "renter", "rental", "rents", "apple"]
    all_rents = {}
    for word in words:
        stem = stemmer.stem(word)
        if stem not in all_rents:
            all_rents[stem] = []
            all_rents[stem].append(word)
        else:
            all_rents[stem].append(word)
    print(all_rents)
    

    结果:

    {'rent': ['renting', 'rents'], 'renter': ['renter'], 'rental': ['rental'], 'appl': ['apple']}

    还有其他几种算法可供使用。但是,请记住,词干是基于规则的,并不是“聪明”到可以选择所有相关词的程度(如上所示)。您甚至可以实现自己的规则(从 NLTK 扩展 Stem API)。

    在此处阅读有关 NLTK(上述示例中使用的模块)中所有可用词干分析器的更多信息:https://www.nltk.org/api/nltk.stem.html

    您也可以实现自己的算法。例如,您可以实现 Levenshtein 距离(如 @noski 评论中所建议的那样)来计算较小的公共前缀。但是,您必须对此进行自己的研究,因为这是一个复杂的过程。

    【讨论】:

      【解决方案3】:

      对于R 的回答,您可以尝试这些功能作为起点。 d.bgrepl 为例,这里还有一些:

      words =  c("renting", "renter", "rental", "rents", "apple", "brent")
      grepl("rent", words) # TRUE TRUE TRUE TRUE FALSE TRUE
      startsWith(words, "rent") # TRUE TRUE TRUE TRUE FALSE FALSE
      endsWith(words, "rent") # FALSE FALSE FALSE FALSE FALSE TRUE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-21
        • 2011-07-23
        • 1970-01-01
        • 2018-06-11
        • 2021-06-07
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多