自动同义词检测方法

我目前正在研究一种基于神经网络的短文档分类方法,由于我所处理的语料库通常只有大约十个词,因此标准的统计文档分类方法用处有限。基于这一事实,我试图实现某种形式的自动同义词检测,用于训练过程中提供的匹配。我的问题更具体地涉及到如下情况的解决方案:

假设我有“涉及食物”和“涉及球体”两种分类,并且有一个如下数据集:

"Eating Apples"(Food);"Eating Marbles"(Spheres); "Eating Oranges"(Food, Spheres);"Throwing Baseballs(Spheres)";"Throwing Apples(Food)";"Throwing Balls(Spheres)";"Spinning Apples"(Food);"Spinning Baseballs";

我正在寻找一种增量方法,可以逐步形成以下联系:

Eating --> FoodApples --> FoodMarbles --> SpheresOranges --> Food, SpheresThrowing --> SpheresBaseballs --> SpheresBalls --> SpheresSpinning --> NeutralInvolving --> Neutral

我意识到在这种特定情况下,这些匹配可能略显可疑,但这说明了我所面临的问题。我的总体思路是,如果我为一个词在某一类别中的对应词增加计数,那么我最终会意外地将所有内容与“涉及”这个词联系起来;然后我想,如果我为一个词在与多个同义词或非同义词一起出现时减少计数,那么我会失去“吃”和“食物”之间的联系。是否有人知道如何构建一个算法,使我能够朝上述方向前进?


回答:

有人向我解释了一种无监督的引导方法来实现这一点。

应用这种方法有不同的方式和变体,但这里是一个简化的版本。

概念:

首先假设如果两个词是同义词,那么在你的语料库中它们会出现在相似的环境中。(例如,吃葡萄,吃三明治等)

(在这种变体中,我将使用共现作为环境)。

引导算法:

我们有两个列表,

  • 一个列表包含与食物项目共现的词
  • 一个列表包含食物项目本身的词

监督部分

首先为其中一个列表播种,例如,我可能会在食物项目列表中写下“苹果”这个词。

现在让计算机接管。

无监督部分

它将首先在语料库中查找所有出现在“苹果”之前的词,并按出现频率排序。

取前两个(或你想要的任何数量)并将它们添加到与食物项目共现的列表中。例如,可能“吃”和“美味”是前两个。

现在使用该列表通过对列表中每个词右侧出现的词进行排名,找出接下来的两个顶级食物词。

继续这个过程,扩展每个列表,直到你对结果满意为止。

完成后

(你可能需要在过程中手动从列表中删除一些明显错误的内容。)

变体

如果考虑关键词的语法环境,这个过程可以变得非常有效。

Subj ate NounPhraseNounPhrase are/is MoldyThe workers harvested the Apples.    subj       verb     Apples That might imply harvested is an important verb for distinguishing foods.Then look for other occurrences of subj harvested nounPhrase

你可以扩展这个过程,将词移动到多个类别中,而不是在每一步只移动到一个类别中。

我的来源

这种方法在犹他大学几年前开发的一个系统中使用过,该系统通过仅查看新闻文章成功地编制了一份像样的武器词、受害者词和地点词列表。

这是一种有趣的方法,并且取得了良好的结果。

这不是一种神经网络方法,但却是一种引人注目的方法论。

编辑:

犹他大学的系统被称为AutoSlog-TS,可以在这里看到关于它的简短幻灯片,接近演示的结尾。以及关于它的论文链接在这里

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注