UMBC 语义相似性实现

UMBC Semantic Similarity Implementation

我正在使用由 UMBC 提供的语义相似性网络 API。在我的 java 程序中,我发送了一个 HTTP 请求 http://swoogle.umbc.edu/SimService/GetSimilarityoperation=api&phrase1=XXXX&phrase2=XXXX 然后我解析输出以获得结果。

我遇到的问题是我正在处理大规模数据。这需要很长时间,我必须做很多次。我想知道是否有更快的方法来查询 java 中的 Web API?或者,是否有此工具的可实施版本?非 NLP 专家实施它有多容易?

听起来你想快速处理很多短语对,这里提供的API不可用。

您避免网络痛苦的选项是:

  1. 使用批量可用的备用 API。 如果有一个调用接受多对短语并同时输出许多相似性分数,这将允许你要走得更快——但只要他们的 API 包含 (lhs, rhs) -> score 的函数调用,你就会受到调用函数的速度的限制。

有一个 related question that was closed as being off-topic, but which mentions cortical.io 作为一个 API 提供了一个 "bulk" 比较。

  1. 自己索取源代码 运行。 联系托管 API 的组织并询问他们是否可以提供源代码(公开或只对你)。
  2. 自己实现他们的方法或类似的方法。

为了帮助完成 3.,我在下面提供了一些资源。

翻阅他们的 website, and the group's publication page,我发现这篇文章可能很有趣。

Abhay L. Kashyap 等人,"Robust Semantic Text Similarity Using LSA, Machine Learning and Linguistic Resources",语言资源和评估,2016 年 1 月,73 次下载。

对于更容易实现且至少在性能上具有竞争力的东西,我建议查看相似度的词向量方法,例如 Stanford's GloVe or Google's word2vec(您可能需要重新训练才能获得所需大小的短语,或者您可以通过平均或添加向量来表示短语来玩花样)。