2017-11-28 8 views
0

동일한 문자열을 동일한 중요한 단어와 일치시키고 싶습니다.일반적인 의미의 단어로 비슷한 문자열 일치하기

문제 :

나는 두 개의 파일이 하나 개의 마스터와 하나 개의 입력 파일이 있습니다. 나는 입력 파일을 반복하고 master에서 유사한 레코드를 찾아야한다. 현재 ElasticSearch에서 마스터 파일의 색인을 생성하고 ElasticSearch에서 유사한 레코드를 가져 오려고했지만 마스터에 많은 유사한 레코드가 포함되어 있으므로 많은 레코드가 반환되고 해당 레코드에서 적절한 레코드를 찾는 것이 문제입니다.

샘플 입력 기록 : ElasticSearch에서

1. H1 Bulbs Included 

샘플 출력 : 나는 중요한 용어를 얻기 위해 POS 술래를 사용하여 시도했지만 그것이 잘 작동하지 않습니다

1. Included H1 [Correct One] 
2. H7 Bulbs Included 
3. H8 Bulbs Provided 
4. H1 not Included[Should not match this] 

.

POS 술래 출력 :

1. H1/NNP Included/NNP 
2. H8/NNP Bulbs/NNP Provided/NNP 

방법이 진행하는?

편집

: 상기 예 H1에서

는 중요한 용어이다

샘플 입력 레코드 : ElasticSearch에서

1. H1 Bulbs included 

샘플 출력 :

01,
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] 

답변

1

나는 elasticsearch에 익숙하지 해요,하지만이 일을하지만, 표준 파이썬을 사용하는 것은 간단합니다.당신의 기준에서 그것은 정말 중요한 단어는 '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'를 입력하여 확인할 수 있습니다. e

result = 'not' not in inputstr * result 
>>> True 
+0

죄송합니다. edit.Elastic-search는 주어진 검색어에 대해 비슷한 레코드를 반환하는 쿼리 엔진입니다. 더 많은 정보가 필요하면 알려주세요. – The6thSense

+0

좋습니다. 이렇게하면 정말 신축적인 검색 질문입니다. elasticsearch에서 필터링을 수행하기를 원합니다. 이제 이해가된다. – Marcin

+0

실제로 나는 중요한 단어를 식별하고 ElasticSearch의 출력과 비교할 필요가있는 파이썬을 사용하여 올바른 레코드와 일치 시키려고하는 그 서브 세트에서 ElasticSearch의 결과 집합을 얻습니다. – The6thSense