首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定相关单词的程序化方法?

确定相关单词的程序化方法?
EN

Stack Overflow用户
提问于 2011-10-15 23:45:22
回答 3查看 1.3K关注 0票数 2

使用web服务或软件库,我希望能够识别与词根相关的单词(例如,"seated“和"seatbelt”共享词根"seat“,但"Seattle”不被认为是匹配的)。对于这种事情,简单的字符串比较似乎是不可行的。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-16 00:05:40

Here是英语的雪球词干分析器。

您可以将其用作:

代码语言:javascript
复制
SF.Snowball.Ext.EnglishStemmer eng = new SF.Snowball.Ext.EnglishStemmer();
eng.SetCurrent("Seated");
eng.Stem();
Console.WriteLine(eng.GetCurrent()); //returns Seat
票数 3
EN

Stack Overflow用户

发布于 2011-10-15 23:58:57

这是一件复杂的事情,要求计算机来做,但有方法和方法。

这个问题有几个技巧:

A "regex for words" (semantic replacement) - any example syntax and libraries?

但如果你想自己做实验,你可以考虑做的是研究音素和Soundex或Double Metaphone算法。在维基百科上查找“语音算法”。

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

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

但是,对于您的特定示例,您必须比较Seated、安全带和西雅图的算法值。

无论如何,我知道这不是一个完整的答案,但我希望它足以让您入门。

祝好运!

票数 4
EN

Stack Overflow用户

发布于 2011-10-16 00:06:58

我记得读过一篇somewhat related question on this site,其中最好的答案是下载一份维基百科,这样你就可以忽略所有你不需要的东西。

在检查了一些流行的词源和词根搜索网站后,它们都以seat作为查询失败(wordinfoprefixsuffixetymonline)。

如果seat只是一个例子,三个最流行的查找相关单词的服务都失败了,那么它们可能不是你最好的选择。出于这个原因,我推荐使用Wiktionary

Wiktionary上的几乎每个页面都非常详细,甚至对于seat,它在动词部分下列出了所有相关的单词。

seat (第三人称单数简单现在时seats,现在分词seating,简单过去分词seated)

它们甚至是粗体和超链接的,因此将它们解析到本地字典中将是微不足道的。

就我个人而言,我更喜欢有一个本地表,而不是使用web服务,因为web服务可能会宕机,它可能会很慢,而且它需要用户连接到internet才能使用您的应用程序。

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

https://stackoverflow.com/questions/7778836

复制
相关文章

相似问题

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