2017-03-08 93 views
1

有没有某种算法或概念,可以帮助解决以下问题?字符串含义比较

说我有两段文字,代码段1和代码段二。

片段1内容如下:

“狗吓得不敢出门到风暴”

片段2如下:

“犬被吓倒进入阴雨天气“

有没有一种方法可以比较使用某种算法的片段,或者某种字符串理论系统?我想知道在解决这个问题之前是否有任何种类的系统解决了这个问题。

更新: 好的,举一个更具体的例子,说我想减少票务系统中的错误数量。我想做一些扫描,看看是否有任何相关或相似的门票。我想知道根据票证的主体来确定问题的最佳系统方式。 Levenshtein距离算法并不是特别有效,因为它不会知道湿度和干度之间的差异。

+0

此存储库对您的问题有一个词嵌入方法:https://bitbucket.org/yunazzang/aiwiththebest_byor – Aaron

回答

3

有没有办法使用某种算法比较这些片段,或者某种形式的字符串理论系统?我想知道在解决这个问题之前是否有任何种类的系统解决了这个问题。

好了,这是NLP一个非常著名的问题,并且,你在比较两个句子的semantics更精确。 也许你可以看看如gensimWordnet::Similarity等库,它们提供了检索语义相似的文档的方法。

Here's another semantically similar SO question question.

1

一个不错的选择可能是串Levenshtein Distance两者之间。 它是衡量从一个字符串到另一个字符串所需的操作次数。所以,距离越大,两个弦的相似性就越小。

这种算法非常适合拼写检查或语音识别,因为给定的字符串和期望的字符串通常只会有几个字/字符的不同。

对于你的例子,Levenshtein距离是32(你可以试试这个calculator),这表明字符串不是非常相似(因为字符串不比32的距离长)。

这个算法对于上下文敏感的比较并不好,但你的例子是一种极端的情况。很有可能会有更多的共同词汇会导致更小的Levenshtein距离。您可以将此算法与其他一些方法结合使用(请参阅:What are some algorithms for comparing how similar two strings are?)以尝试获得更优化的比较。