您能推荐给我最好的方法吗:我有一个列表短语,例如[“免费鲜花递送”,“莫斯科鲜花递送”,“颜色+送货上门”,“鲜花递送+递送”,“订购鲜花+带有递送”,“颜色递送”]和样式-“鲜花递送”。我需要获取短语的列表,并尽可能接近模式。
您能给一些建议吗?
答案 0 :(得分:1)
nflacco给出的答案是正确的。除此之外,您是否尝试过编辑距离?尝试使用Fuzzywuzzy(pip install Fuzzywuzzy)。它使用“编辑距离”来给你一个分数,两个句子的接近程度
答案 1 :(得分:0)
有很多方法可以执行此操作,但是最简单的方法是直接匹配:只需在输入短语中搜索字符串“ flower delivery”即可。不过,这是相当二进制的,您可以修改此方法以使用双字或词袋。
单词袋意味着我们解析短语和模式,并在那里获得单词列表或单词集,即[“ flower”,“ delivery”]。您可以通过找出一些相似度来对每个短语评分(即,模式中的单词集是否出现在短语中,然后对短语进行最接近的匹配:
bag_pattern = set()
for word in pattern:
set.add(word)
for phrase in phrases:
score = 0
for word in phrase:
if word in bag_pattern:
score += 1
# do something based on score
我们可能需要考虑位置-即“鲜花递送”比“鲜花递送”更相关。我们可以为短语和模式计算N语法(通常是双字母组或三字母组,所以2或3个词组)。假设我们在做二元组:
“鲜花递送莫斯科”-> [“鲜花递送”,“莫斯科递送”
然后,您可以应用某种评分方式来确定匹配的好坏。
通常,您需要进行一些文本预处理。您可能希望用词袋法(“ the”,“ a”等)消除停用词,并且可能希望将动词等标准化为其词根形式。
好,所以您的老板不喜欢简单的东西,而您必须进行机器学习。这也可以!
最简单的技术是查看单词的概率,并将其相乘。典型示例是检测电子邮件的垃圾邮件。
方法是接收一堆文本形式的电子邮件,并将它们分为两类-垃圾邮件而不是垃圾邮件。然后,您遍历所有电子邮件,对于看到的每个唯一单词,都用垃圾邮件而不是垃圾邮件来统计出现的次数。这使您有可能在垃圾邮件中出现单词。
想象一下您的电子邮件包含以下内容:
“你好,我是尼日利亚王子。”
利用之前计算出的概率,您可以查找每个单词的概率,将它们相乘,并获得通过单词数归一化的电子邮件得分。垃圾邮件中包含“尼日利亚”和“王子”的概率非常高,因此该电子邮件的得分将非常高!
以下链接涵盖了使用深度学习技术的单词袋和n-gram:
https://pytorch.org/tutorials/beginner/deep_learning_nlp_tutorial.html