字符串含义比较

时间:2017-03-08 19:33:48

标签: string algorithm text-processing

是否有某种算法或概念可以帮助解决以下问题?

假设我有两个文本片段,片段1和片段两个。

Snippet 1内容如下:

  

"狗太害怕了,不能出风暴了#34;

Snippet 2内容如下:

  

"犬类被吓到冒险进入阴雨天气"

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

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

2 个答案:

答案 0 :(得分:3)

  

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

嗯,这是NLP中一个非常着名的问题,更确切地说,你正在比较两句话的semantics。 也许您可以查看像gensimWordnet::Similarity等库,这些库提供了检索语义相似文档的方法。

Here's another semantically similar SO question question.

答案 1 :(得分:1)

此处的选项可以是两个字符串之间的Levenshtein Distance。 它衡量从一个字符串到另一个字符串所需的操作数。因此,距离越大,两个弦的相似性就越小。

这种算法非常适合拼写检查或语音识别,因为给定的字符串和预期的字符串通常只相差几个单词/字符。

对于您的示例,Levenshtein距离为32(您可以尝试此calculator),这表示字符串不是非常相似(因为字符串不比32的距离长很多)。

此算法不适合上下文敏感的比较,但您的示例是一种极端情况。很可能会有更多的单词会导致Levenshtein距离变小。您可以将此算法与其他一些方法结合使用(请参阅:What are some algorithms for comparing how similar two strings are?),以尝试进行更优化的比较。