【问题标题】:Algorithm to find related words in a text在文本中查找相关单词的算法
【发布时间】:2011-09-25 07:39:38
【问题描述】:

我想要一个词(例如“Apple”)并处理一个文本(或者更多)。我想提出相关的术语。例如:为 Apple 处理一个文档并找到那个 iPod、iPhone , Mac 是与“Apple”相关的术语。

你知道如何解决这个问题吗?

【问题讨论】:

标签: artificial-intelligence similarity


【解决方案1】:

作为起点:您的问题与text mining 有关。

有两种方法:一种是统计方法,一种是自然语言处理 (nlp)。

我对nlp了解不多,但可以说一下统计方法:

  1. 您需要一些文档的向量空间表示,请参阅 http://en.wikipedia.org/wiki/Vector_space_model http://en.wikipedia.org/wiki/Document-term_matrix http://en.wikipedia.org/wiki/Tf%E2%80%93idf

  2. 为了学习语义,即:不同的词表示相同的意思,或者一个词可以有不同的意思,你需要一个大的文本语料库进行学习。正如我所说,这是一种统计方法,因此您需要大量样本。 http://www.daviddlewis.com/resources/testcollections/

    也许您有很多来自您要使用的上下文的文档。那是最好的情况。

  3. 您必须从该语料库中检索潜在因素。最常见的是:

    这些方法涉及大量数学。要么你去挖掘它,要么你必须找到好的库。

我可以推荐以下书籍:

【讨论】:

  • 对于像我这样的傻瓜,我们只是建立一个大的共现矩阵。这告诉我们单词是一起出现的,实际上是相当不错的。不管它们是同义词还是那种东西……那是人工智能,实际上并不存在,尽管 UW 的 Hoifung Poon 对此做了一些巧妙的研究(无监督语义解析)。
【解决方案2】:

与所有 AI 一样,这是一个非常困难的问题。您应该查看natural language processing 以了解其中的一些问题。

一种非常非常简单的方法是构建一个单词的二维表,其中每对单词的平均距离(以单词为单位)出现在文本中。显然,您需要限制考虑的最大距离,以及可能的字数。然后,在处理大量文本后,您将获得特定单词在同一上下文中出现频率的指标。

【讨论】:

    【解决方案3】:

    我要做的是获取文本中的所有单词并制作频率列表(每个单词出现的频率)。也许还可以添加一个启发式因素,说明这个词与“Apple”的距离有多远。然后阅读多个文档,将所有文档中不常见的单词划掉。然后根据与关键字的频率和距离进行优先级排序。当然,你会得到很多垃圾,并且可能会漏掉一些相关的词,但是通过调整启发式算法,你至少应该得到一些不错的匹配。

    【讨论】:

    • 再想一想,你也应该给它一些与“Apple”无关的文本,并排除那些文本中出现的单词。这将摆脱“the”、“of”等常用词。
    【解决方案4】:

    您正在寻找的技术称为Latent Semantic Analysis (LSA)。它有时也称为潜在语义索引。该技术基于相关概念在文本中一起出现的想法。它使用统计数据来建立单词关系。给定足够大的文档语料库,它肯定会解决您查找相关词的问题。

    【讨论】:

      【解决方案5】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-09
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 1970-01-01
        • 2019-08-22
        • 2017-10-10
        相关资源
        最近更新 更多