我想用相同的有效词匹配相似的字符串。
问题:
我有两个文件,一个主文件和一个输入文件。我必须遍历输入文件并从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/