程序化确定相关词的方法

本文关键字:方法 程序化 | 更新日期: 2023-09-27 18:11:16

使用web服务或软件库,我希望能够识别与根单词相关的单词(例如,"就座"answers"安全带"共享根单词"座位",但"西雅图"不会被认为是匹配的)。对于这种事情,简单的字符串比较似乎是不可行的。

除了定义自己的字典之外,是否有库或web服务不仅可以返回单词定义,还可以返回单词的"词根",以便我可以执行这种类型的检查?

程序化确定相关词的方法

这是一件很复杂的事情,但是有很多方法和方法。

这个问题有几个技巧:

单词"(语义替换)-任何示例语法和库?

但是如果你想自己做实验,你可以考虑做的是看看音素和Soundex或Double Metaphone算法。看看维基百科上的"语音算法"。

这个想法很简单,你计算出一个单词的发音,然后可以用数学方法表示出来,然后你可以将它与你的字典进行比较,字典已经预先计算出了这种表示。

这样做的目的是将字典简化为(希望)可操作的数据集,您将不得不以某种方式进行分析。

对于您的具体示例,您必须比较坐姿,安全带和西雅图的算法值。

无论如何,我知道这不是一个完整的答案,但我希望这足以让你开始。

祝你好运!

这是雪球英语梗

你可以这样使用:

SF.Snowball.Ext.EnglishStemmer eng = new SF.Snowball.Ext.EnglishStemmer();
eng.SetCurrent("Seated");
eng.Stem();
Console.WriteLine(eng.GetCurrent()); //returns Seat

我记得在这个网站上看到过一个有点相关的问题,最好的答案是下载一份维基百科,在那里你可以忽略所有你不需要的东西。

在检查了一些流行的词源和词根搜索网站后,他们都没有将座位作为查询(wordinfo, prefixsuffix和etymonline)。

如果seat只是一个例子,三个最流行的搜索相关单词的服务都失败了,它们可能不是你最好的选择。因此,我推荐维基词典。

几乎维基词典的每一页都非常详细,甚至对座位来说,它在动词部分列出了所有相关的单词。

seat(第三人称单数一般现在时seats,现在分词座位,一般过去时和过去分词就座)

它们甚至被加粗和超链接,所以将它们解析到本地字典中是微不足道的。

就我个人而言,我更喜欢使用本地表而不是使用web服务,因为web服务可能会出现故障,它可能很慢,并且它需要您的用户连接到互联网才能使用您的应用程序。