根据用户输入生成相似的短语

问题描述

我想根据用户输入生成LSI(潜在语义索引)关键字 我曾经使用wordnet来生成相似的单词(同义词),但是我不知道如何将其应用于短语

我想做的事的例子:

input = "cheap car"
Output = "cheap cars for sale near me","used cars "

单词同义词的Python代码

initial_kw = "buy"
synonyms = []

for syn in wordnet.synsets(initial_kw):
    for l in syn.lemmas():
        synonyms.append(l.name())


generated_kw = list(set(synonyms))

结果相对较差!

我已经读到我可以使用“ word2vec”之类的东西,然后使用K最近的邻居,以获得更好的结果,但是仍然不知道如何将其应用于短语。我什至不知道这是否是正确的方法

解决方法

我不确定 wordnet 数据库的更新频率,因为它似乎缺少单词。您可以使用wordhoard生成同义词列表。下面的示例从3个同义词源查询单词“购买” wordhoard 中还有其他来源,但是我不确定您需要多少个同义词。

from wordhoard import synonyms

synonym_01 = synonyms.query_collins_dictionary_synonym('buy')
synonym_02 = synonyms.query_thesaurus_com('buy')
synonym_03 = synonyms.query_wordnet('buy')
synonym_results = sorted(set([y for x in [synonym_01,synonym_02,synonym_03] for y in x]))
print(synonym_results)
['acquire','acquisition','bargain','closeout','deal','get','good deal','investment','obtain','pay for','procure','purchase','score','secure','steal','value']