【发布时间】:2016-03-10 22:09:21
【问题描述】:
假设我们有 16 个不同的类别,例如计算机、科学、艺术、商业等。我们在每个类别下都有一些词作为同义词、同音词等,它们描述了每个主题及其范围的可能含义。因此,可能有相似甚至相同的词属于多个类别。我们的目标是向系统提交查询(最大长度为 3,去除停用词后),并要求系统将该词放入相似度最高的类别中。所以我的问题是,除了余弦相似度之外,还有什么好的技术可以做到这一点?
我已经知道WordNet 及其扩展版本extjwnl,但是,我希望实现一个为我提供足够灵活性的小用途。
【问题讨论】:
-
你能说得更具体一点吗?描述这个“查询”,我不知道你所说的最大长度是什么意思。听起来您需要能够使用“按引用传递”和“按值传递”。 Java 很难做到这一点,因为该语言不支持指针。如果这是您感兴趣的逻辑,您将需要每个单词包含它适合的所有类别。因此,类别将需要在每个单词中具有某种引用。如果您想使用 java,您将需要某种 oop 模型,如果速度是一个问题,这可能会很困难。需要更多信息。
-
@bigcodeszzer 最大长度表示查询包含的最大关键字。想象一下,我们有“printer laserjet”作为查询。我们希望将其分配给相似度最高的类别。每个类别都装满了一袋最相关的词。所以我的问题是,怎么做?
-
听起来你正在做的事情非常具体,超出了基本的编码逻辑。但最终,如果您将每个类别编码为一个对象,那么您将使用一个函数来搜索每个类别的单词模式。如果您有多个单词模式,则必须多次运行该函数。计算每个类别中的匹配数并返回匹配次数最多的那个。
-
预测或映射类别可以让这更快、更高效,这样您就可以在搜索过程中确定获得高结果的可能性。如果你真的想看看有趣的东西,看看神经网络。这种类型的模型可能会有所帮助。
-
@bigcodeszzer 这想法太简单了。所以我把这个问题发给
statistical建模。
标签: java nlp stanford-nlp linguistics