如何将一个单词与所选单词列表进行比较,以找到最相关的单词? [关闭]

Posted

技术标签:

【中文标题】如何将一个单词与所选单词列表进行比较,以找到最相关的单词? [关闭]【英文标题】:How can I compare a word against a list of chosen words to find the word that correlates the strongest? [closed] 【发布时间】:2015-05-21 05:14:47 【问题描述】:

我希望设计一个搜索框,它可以接受任何输入并从选定的输出列表中返回最合适的输出。

例如,我选择的输出列表是animalvehicleplace

如果用户搜索cat,我希望代码运行cat vs animalvehicleplace。将为每个确定相关/匹配分数。使用animal 产生最高的相关性。然后输出将是animal

同样,输入car,会从列表中输出vehicle

对于生成此相关分数的最佳方法有什么想法吗? 我的输出列表包含 100 个不同的术语。

【问题讨论】:

除非你有大量的上下文训练数据,否则对于任意输入来说这将是极其困难的(我几乎想说不可能)。 输入不受约束,字典能有多大?你能列举最常见的吗?否则,要么像@nico 说的那样训练你自己的模型(LDA?贝叶斯?),或者根据我的回答使用 API,或者使用 API 来训练你的模型。 【参考方案1】:

您正在寻找一个分类器。 要么动态查找 API,要么使用 API 来训练你的模型(如果你的模型没有命中,可以尝试使用 API 作为后备)。

例如一种方法是根据Is there any free online dictionary API (json/xml) with multiple languages to choose from?

中的答案使用 Wiktionary API

这是 cat:English:Etymology 1:Noun 的条目,然后您只需要处理该条目即可发现诸如动物/车辆/地点之类的关键字。这是可行的。

或者只是查找动物、车辆、地点的在线列表。

还有很多其他的 API,大部分需要注册,有些是付费的。

【讨论】:

这是一个很好的方法,但对于任意输入很容易失败(可能不是动物,但绝对是地方)。另外:is Jaguar a car or a feline? 请注意,我并不是说您的答案不好,它实际上可能是解决恕我直言一个定义不明确的问题的最佳解决方案 :) 如果程序接受的不是单个单词,而是文本的 sn-ps然后可以采取其他方法。 @nico :我在上面的评论中已经提到了 LDA 或贝叶斯方法,它们可以根据其他词来区分上下文。我严重怀疑 OP 真的想为这个任务训练一个任意复杂的分类器。

以上是关于如何将一个单词与所选单词列表进行比较,以找到最相关的单词? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫将列表中的单词与频率列表中的单词进行比较

在单词中找到最短的重复周期?

我将如何修复我的代码以便以这种格式创建一个单词文件(见正文)?

multiprocessing.Pool() 比只使用普通函数慢

如何在 MySQL 中找到最流行的单词出现?

将单词与特殊字符(é、è、...)进行比较时忽略变音符号