Python发现了请求之间的相似之处

Python发现了请求之间的相似之处,python,nlp,word2vec,topic-modeling,Python,Nlp,Word2vec,Topic Modeling,我正在进行一个项目来分析以前的请求,如果有新的请求,我需要匹配以前的请求,并使用为相同的请求提供的解决方案 例如:如果这些是以前的请求“Microsoft Inc的风险评级”、“九月份报告”等,如果新请求是“九月份报告”,我需要找到相似之处,并使用为一个匹配的以前请求提供的解决方案 我计划用Python实现。我遇到了这个实现算法——主题建模和word2vec。我的方向正确吗?这取决于您需要解决方案的速度。如果速度不是问题,最准确的方法是使用一些预先训练好的上下文表示法,如 单词嵌入(比如word

我正在进行一个项目来分析以前的请求,如果有新的请求,我需要匹配以前的请求,并使用为相同的请求提供的解决方案

例如:如果这些是以前的请求“Microsoft Inc的风险评级”、“九月份报告”等,如果新请求是“九月份报告”,我需要找到相似之处,并使用为一个匹配的以前请求提供的解决方案


我计划用Python实现。我遇到了这个实现算法——主题建模和word2vec。我的方向正确吗?

这取决于您需要解决方案的速度。如果速度不是问题,最准确的方法是使用一些预先训练好的上下文表示法,如

单词嵌入(比如word2vec)当然是一个好的、快速的解决方案。您只需要标记查询,查找表中的嵌入,计算平均值。您可能希望使用word2vec而不是word2vec。在计算单词向量时,它还考虑了字符n-grams,因此它可能对拼写错误更具鲁棒性。如果请求更长,平均值可能更高,因此您可能需要删除停止词

好的旧载体也可能很有用


主题建模(like)更适合于较长的文本。

我的印象是“句子嵌入”不是一件事

无论如何,这里有另一种方法你可以考虑。< /P> 以下是基于以下内容运行的示例:

[7]中的
:docs=[
…:“微软公司的风险评级”,
…:“微软评级”,
…:“9月份报告”,
…:“十月份报告”
...: ]   
In[10]:对于单据中的单据:
…:打印(“匹配文档”,文档,:”,fuzzyhash.distance(
…:fuzzyhash.fuzzyhash(“9月报告”),
…:fuzzyhash.fuzzyhash(doc)))
Microsoft Inc.的匹配文档风险评级:15
微软评级:17
9月份匹配单据报告:3
10月份的匹配单据报告:9

它正确地猜测最近的旧请求是“9月份报告”。

听起来不错。你也可以为完全相同的请求实现缓存,这样你就不会浪费时间。你需要训练一个模型来发现语义相似性吗?UMLFIT基于pretrain,您只需少量示例即可实现目标。@powerPixie是的,我需要根据以前的请求进行培训,如果有新的请求,我需要找到最接近的匹配项。请记住,教程请求与堆栈溢出无关。从官方关闭原因来看:要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。