检测和比较短语的算法

6
我有几个非英语文本,想要进行风格比较。其中一种比较风格的方法是查找相似短语。如果在一本书中多次出现“钓鱼,滑雪和徒步旅行”,而在另一本书中是“钓鱼,徒步旅行和滑雪”,那么风格的相似性指向同一位作者。然而,我还需要能够找到“甚至是滑雪或徒步旅行的钓鱼”。理想情况下,我也会找到“垂钓,徒步旅行和滑雪”,但因为它们是非英语文本(Koine Greek),所以较难允许同义词,此方面不是必要的。
最佳方法是(1)如何检测这些短语,然后(2)以不过于严格的方式在其他文本中搜索它们(以便找到“甚至是滑雪或徒步旅行的钓鱼”)?
3个回答

9
  • 将所有文本的单词列成一个列表。简单的方法:列出所有单词。困难的方法:只列出相关的单词(例如在英语中,“the”从不是一个相关的单词,因为它使用太频繁)。假设您的词汇表中有V个单词。
  • 对于每个文本,建立大小为V * V的邻接矩阵A。行A(i)表示您的词汇表中的单词与第i个单词V(i)的相似程度。例如,如果V(i)=“滑雪”,则A(i,j)是单词V(j)与单词“滑雪”的相似程度。您应该选择一个较小的词汇表!

技术细节: 对于词汇表,您有几种可能获得良好的词汇表。不幸的是,我记不得它们的名称了。其中之一是删除经常出现且无处不在的单词。相反,您应该保留在少数文本中出现的罕见单词。但是,保留仅在一个文本中出现的单词没有用。

对于邻接矩阵,邻接是通过计算您正在考虑的单词之间的距离(计算它们之间的单词数)来测量的。例如,让我们使用您的文本=)

比较风格的一种方法是寻找相似的短语。如果我在一本书中多次发现“钓鱼,滑雪和徒步旅行”,并在另一本书中发现“钓鱼,徒步旅行和滑雪”,则样式的相似性指向一个作者。但我也需要能够找到“甚至垂钓,徒步旅行和滑雪”。理想情况下,我还会发现“angling,hiking和skiing”,但由于它们是非英语文本(Koine Greek),所以更难允许同义词,这方面不是必要的。

这些值完全是虚构的:
A(method,comparing)+ = 1.0
A(method,similarity)+ = 0.5
A(method,Greek)+ = 0.0

您主要需要一个“典型距离”。例如,您可以说在20个分隔单词之后,单词不能再被视为相邻的了。

稍微进行归一化后,只需对两个文本的邻接矩阵进行L2距离计算即可看出它们的相似程度。之后您可以进行更复杂的操作,但这应该产生可接受的结果。现在,如果您有同义词,可以以不错的方式更新邻接矩阵。例如,如果您输入“美丽的少女”,则
A(beautiful,maiden)+ = 1.0
A(magnificent,maiden)+ = 0.9
A(fair,maiden)+ = 0.8
A(sublime,maiden)+ = 0.8
...


1

你应该使用一些字符串相似度度量,例如JaccardDice余弦相似度。你可以尝试在单词、(单词或字符级别的)n-grams或词形上进行比较。(对于像Koinè希腊语这样高度屈折的语言,如果你有一个好的词形还原器,我建议使用词形还原。)

捕捉同义词很难,除非你有像WordNet这样将同义词映射在一起的东西。


1

我会遵循两个准则:

  • 当进行匹配算法时,要谨防过早进行优化。从广泛的方法开始,然后根据需要进行细化(即检查是否针对您已知答案的数据集使用简单的“接近度”测试可以得出足够好的结果,如果不行,则调整它直到达到目标)。在许多情况下,您会发现高度优化的解决方案给出的结果与第一次尝试相比并没有显着不同。
  • 使用某种自学习算法。这样,您可以向AI提供一些能让它变得更聪明的文本。从您的示例中获得灵感:在尝试比较两个目标文本之前,我会输入一篇关于户外生活的文章。这样,人工智能很可能会自己学会,angling是与fishing非常相似的匹配。

作为一个自学习的AI,我将使用(至少在开始时)神经网络。有一个简单且完全可用的示例(用Python编写),可以在这里找到,精准地针对“数据挖掘”。当然,您也可以在其他语言中实现。

关于您的两个具体问题:
“检测这些短语的最佳方法是什么”
其他回答您的问题的人已经详细讨论了这个问题(他们的作者似乎比我更懂这个主题!),但是我会从简单的角度开始,只需使用一个神经网络告诉您两个术语之间的相似程度。然后,我会进行“优化”的“波”(例如-如果它是英文文本-仅使用单词的根,或者也许根据文本的某些其他元数据(如年份、作者、地理来源等)调整分数,或者甚至完全改变匹配算法...),直到您对结果满意为止。
“以不过于严格的方式在其他文本中搜索它们的最佳方法(以便找到“钓鱼甚至滑雪或徒步旅行”)”
我认为这相当于要求AI返回所有“接近得分”超过给定阈值的短语。
希望对您有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接