0

我想用相同的重要词匹配相似的字符串。

问题:

我有两个文件一个主文件和一个输入文件。我必须遍历输入文件并从 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标记器输出:

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]

最初我需要识别重要的词。重要词中目前没有模式。

IE)

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

1 回答 1

1

我不熟悉弹性搜索,但这样做但使用标准 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',你可以在inputstr中检查'not',即

result = 'not' not in inputstr * result
>>> True
于 2017-11-29T02:22:38.693 回答