我希望匹配具有相同重要字词的类似字符串。
问题:
我有两个文件,一个是主文件,一个是输入文件。我必须遍历输入文件并从master中找到类似的记录。目前我已经在ElasticSearch中索引了主文件并尝试从ElasticSearch获取类似的记录,但由于Master包含许多类似的记录,因此返回许多记录并从中找到适当的记录是问题。
示例输入记录:
1. Included H1 [Correct One]
2. H7 Bulbs Included
3. H8 Bulbs Provided
4. H1 not Included[Should not match this]
来自ElasticSearch的示例输出:
1. H1/NNP Included/NNP
2. H8/NNP Bulbs/NNP Provided/NNP
我尝试使用POS标记来获取重要的术语,但效果不佳。
POS Tagger输出:
1. H1 Bulbs included
如何处理?
修改
在上面的示例中, H1 是重要的术语
示例输入记录:
1. H2 Bulbs Included
2. H3 Bulbs Included
3. H1 [Correct One]
ElasticSearch的示例输出:
1.H1 bulbs [H1]
2.9600 added [9600]
3.It has H8 [H8]
4.1/2 wire for 4500 bulb [4500]
最初我需要识别重要的单词。目前在重要词汇中没有模式。
即。)
@Configuration
@ApplicationPath("/api")
public class JerseyConfiguration extends ResourceConfig {
public JerseyConfiguration() { }
@PostConstruct
public void setUp() {
register(AdminController.class);
register(AdminResource.class);
register(GenericExceptionMapper.class);
}
}
答案 0 :(得分:1)
我不熟悉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个你可以检查总和等
过滤掉'不是',你可以检查“不是”#39;不在inputstr,即
result = 'not' not in inputstr * result
>>> True