首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测和比较短语的算法

检测和比较短语的算法
EN

Stack Overflow用户
提问于 2011-06-30 19:30:29
回答 3查看 1.7K关注 0票数 6

我有几篇非英语的文章。我想对它们进行风格上的比较。

比较风格的一种方法是寻找相似的短语。如果我在一本书“钓鱼,滑雪和徒步旅行”中发现了几次,而在另一本书“钓鱼,徒步旅行和滑雪”中,风格上的相似性指向了一个作者。我还需要能够找到“钓鱼,甚至滑雪或徒步旅行”。理想情况下,我也会找到“垂钓,徒步旅行和滑雪”,但因为它们是非英语文本(Koine希腊语),同义词更难允许,这一方面并不重要。

最好的方法是(1)检测这些类型的短语,然后(2)以一种在其他文本中不太死板的方式搜索它们(以便找到“钓鱼,甚至滑雪或徒步旅行”)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-30 19:46:46

  • 获取你所有的文本,并建立一个单词列表。简单的方法:接受所有的单词。困难的方法:只使用相关的一个(即:在英语中," the“从来都不是一个相关的词,因为它使用得太频繁了)。假设每个文本的vocabulary.
  • For中有V个单词,构建一个邻接矩阵A,大小为V*V。A(i)行说明词汇表中的单词与第i个单词V(i)的距离有多近。例如,如果V(i)= "skiing“,则A(i,j)是单词V(j)与单词”skiing“的距离。你更喜欢小词汇量!

技术细节:对于词汇表,您有几种可能获得一个好的词汇表。不幸的是,我记不住名字了。其中之一是删除经常出现的单词。相反,你应该保留在很少的文本中出现的生词。然而,保存恰好出现在一个文本中的单词是没有用的。

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

比较风格的

One method就是寻找相似的短语。如果我在一本书“钓鱼,滑雪和徒步旅行”中发现了几次,而在另一本书“钓鱼,徒步旅行和滑雪”中,风格上的相似度指向了一个作者。我还需要能够找到“钓鱼,甚至滑雪或徒步旅行”。理想情况下,我也会找到“垂钓,徒步旅行和滑雪”,但因为它们是非英语文本(Koine 希腊语),同义词更难允许,这一方面并不重要。

这些完全是虚构的值:

A(方法,比较) += 1.0

A(方法,相似性) += 0.5

A(方法,希腊语) += 0.0

你主要需要一个“典型距离”。例如,你可以说,在20个分隔词之后,这些词就不能再被认为是相邻的。

在进行一些归一化之后,只需在两个文本的邻接矩阵之间建立一个L2距离,看看它们有多近。你可以在之后做一些更花哨的事情,但这应该会产生可接受的结果。现在,如果你有同义词,你可以很好地更新邻接关系。例如,如果你在输入中输入了“漂亮的女孩”,那么

一个(漂亮的,处女的) += 1.0

A(华丽的,处女作) += 0.9

A(公平,处女) += 0.8

A(sublime,maiden) += 0.8

..。

票数 8
EN

Stack Overflow用户

发布于 2011-06-30 19:42:14

您可能应该使用一些字符串相似性度量,如JaccardDicecosine similarity。您可以在单词、(单词或字符级别)n-gram或词条上尝试这些方法。(对于像Koinè希腊语这样词形变化很大的语言,如果你有一个很好的词法分析器,我建议你使用词法。)

捕获同义词是很困难的,除非您有像WordNet这样的东西,它可以将同义词映射在一起。

票数 1
EN

Stack Overflow用户

发布于 2011-06-30 20:08:12

我会遵循两条准则:

匹配算法中过早优化的

  • Beware。从广泛的方法开始,然后根据需要进行改进(即检查简单的“接近”测试是否为您知道答案的数据集提供了足够好的结果,如果不是,则对其进行调整,直到结果正确为止)。在许多情况下,你会发现一个高度优化的解决方案不会给你的第一个粗略的attempt.
  • Use带来多少不同的结果,某种自学习算法。这样,你就可以向AI提供大量的文本,让它变得更智能。从你的例子中获得灵感:在尝试比较两个目标文本之前,我会提供一个关于户外生活的文本。这样,AI很可能会自己了解到,与fishing.

非常接近的是angling

作为一名自学AI,我会使用(至少在一开始)神经网络。有一个简单且完整的示例(用python编写)可以在中找到,它的目标正是“数据挖掘”。当然,您可能希望在其他语言中实现。

关于你的两个具体问题:

检测这类短语的最佳方法是什么

你的问题的其他答案已经详细说明了这一点(他们的作者似乎比我在这个问题上知道得更多!),但再说一遍:我会从简单的开始,简单地使用一个神经网络来告诉你两个词有多接近。然后,我会继续进行"waves“优化(例如,如果它是一个英文文本-只使用单词的词根,或者可能对根据文本的其他元数据调整分数有一些用处,比如年份、作者或地理来源,或者完全改变匹配算法……)直到你对结果满意为止。

以一种在其他文本中不太死板的方式搜索它们的最佳方式是什么(以便找到“钓鱼,甚至滑雪或徒步旅行”

我会说,这相当于要求AI返回其“接近度分数”超过给定阈值的所有短语。

哈!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6534030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档