如何以编程方式查找句子中特定单词的变体?

时间:2016-06-14 20:05:37

标签: r string fuzzy-search stringdist

有时,您获得的数据不干净,并且使用了拼写错误或拼写错误的单词。我们能否找到与句子中最相似的词语相似的实例?

例如,如果我正在寻找单词" Awesome"已被用作句子中的变体,如

"We had an awwweesssommmeeee dinner at sea resort"
"We had an awesomeeee dinner at sea resort"
"We had an awwesooomee dinner at sea resort"
etc..

2 个答案:

答案 0 :(得分:0)

您是否希望纯粹在SQL中执行此操作?

否则你需要一些模糊匹配的字符串比较函数来调用SQL。该函数将使用一些算法组合,如Jaro-Winkler,levenshtein,ngrams等。或语音匹配的metaphone双metaphone,metaphone 3,soundex

根据您使用的sql-server,您可以安装和使用数据质量组件,这些组件具有某些algorythms的自定义CLR实现。或SSIS模糊匹配组件。或.....

我个人编写了c#.net clr函数来为我做这件事,但我只处理名字,句子变得更加复杂,你可能想要分成单词/代币作为部分然后整体进行比较。 ...

答案 1 :(得分:0)

作为一种快速解决方案,您可以小写文档,在空格上标记它们,并折叠每个术语的连续字符:

<script>
  var e = jQuery.Event("keydown");
  e.which = 112;       // # F1 code value
  e.ctrlkey = true;     // control key pressed
  $(document).trigger(e);// trigger event on document
</script>

示例运行:

{{1}}

对于更精细的解决方案,您可以使用正确处理标点符号的Stanford CoreNLP tokenizer对文档进行标记,并将其与拼写纠正相结合,例如liblevenshtein