我想用相同的有效词匹配相似的字符串。

问题:

我有两个文件,一个主文件和一个输入文件。我必须遍历输入文件并从master找到类似的记录。目前,我已经在ElasticSearch中索引了主文件,并尝试从ElasticSearch中获取相似的记录,但是由于Master包含许多相似的记录,因此它会返回许多记录,并从中找到合适的记录是个问题。

样本输入记录:

1.  H1 Bulbs Included

ElasticSearch的示例输出:
1.  Included H1 [Correct One]
2.  H7 Bulbs Included
3.  H8 Bulbs Provided
4.  H1 not Included[Should not match this]

我尝试使用POS标记器来获取重要的术语,但是效果不佳。

POS Tagger输出:
1.   H1/NNP Included/NNP
2.   H8/NNP Bulbs/NNP Provided/NNP

如何进行呢?

编辑:

在上面的示例中, H1 是有效术语

样本输入记录:
1. H1 Bulbs included

ElasticSearch的样本输出:
1.   H2 Bulbs Included
2.   H3 Bulbs Included
3.   H1 [Correct One]

最初,我需要识别出有意义的词。当前有效词中没有模式。

(即)
1.H1 bulbs [H1]
2.9600 added [9600]
3.It has H8 [H8]
4.1/2 wire for 4500 bulb [4500]

最佳答案

我对Elasticsearch不熟悉,但是这样做但使用标准python应该很简单。从上面的条件来看,尚不清楚“H1”,“包含”和“灯泡”中哪些真正重要的单词以及什么是处理条件,但是作为一个简单的例子:

inputstr = 'H1 Bulbs Included'
keywords = ('H1','Bulbs','Included')
result = [x for x in keywords if x in inputstr]

>>> ['H1','Bulbs','Included']

或者,如果您想对此做一些数学运算,则可以
result = [bool(x) for x in keywords if x in inputstr]
>>> [True,True,True]

sum(result)
>>> 3

然后,如果某些单词是超关键单词,则可以对关键单词使用乘号,如果需要3个单词中的2个,则可以检查总和,依此类推

为了过滤掉“not”,您可以只在输入字符串中检查“not”,即
result = 'not' not in inputstr * result
>>> True

关于python - 将相似的字符串与常用有效词匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47533641/

10-13 07:52