2016-11-14 7 views
21

다음으로 영감을 받았습니다 gitvideoword2vec을 내 검색어의 동의어로 사용하여 내 도메인의 개념적 검색을 만들려고합니다.노드 JS 클라이언트를 사용하여 Elasticsearch 색인에서 가장 중요한 단어 추출

다음과 같은 문서 구조주기 (? TF-IDF) 나는 전체 색인을 통해 반복하고 "더 크게"로 단어를 추출하고 싶습니다

{ 
     "_index": "conversations", 
     "_type": "conversation", 
     "_id": "103130", 
     "_score": 0.97602403, 
     "_source": { 
      "context": "Welcome to our service, how can I help? do you offer a free trial", 
      "answer": "Yes we do. Here is a link for our trial account." 
     } 
     } 

합니다.
일단 상위 100 단어 목록을 갖게되면 word2vec을 사용하여 동의어 필터를 만듭니다.

내 질문은 : ES 노드 JS 클라이언트를 사용하여 어떻게 수행 할 수 있습니까? 문서

+0

TF-IDF는 컬렉션에 대한 정의되지 않은 일반적인 신체, 그것은 문서에 정의되어있다. 당신은 idf 부분으로 끝날 것입니다, 그것은 당신이 찾고있는 것이 매우 의심 스럽습니다. –

+0

답장을 보내 주셔서 감사합니다. 색인에서 중요한 단어를 추출하는 더 나은 방법을 제안 할 수 있습니까? –

+0

@ShlomiSchwartz를 사용하면 솔루션이 suggester가 이미 제공 한 기능보다 더 나은 방법을 설명 할 수 있습니까? – AR1

답변

1

TF - IDF는 일반적

Tf를 또는 장기 주파수 문서의 단어의 빈도를 나타낸다 (코사인 유사도, 유클리드 거리 등을 사용하는) 문서의 유사도를 발견하는데 사용된다. 단어의 빈도가 높을수록 단어의 중요성이 높아집니다.

Idf 또는 역 문서 빈도는 단어가 들어있는 문서 (입력 컬렉션의) 수를 나타냅니다. 더 희귀 한 단어, 단어의 중요성이 높습니다.

TF를 사용하여 문서 벡터를 작성하는 경우 일반적인 단어 (예 : 대명사, 접속사 등)가 더 중요해지기 때문에 스팸이 발생하기 쉽습니다. 따라서 td-idf의 조합은 더 나은 의미를 부여하고 단어의 실제 의미를 나타냅니다. 즉, 중요도에 따라 문서의 단어 순위를 매기는 대신 각 단어의 tf를 계산하는 대신 전체 입력 컬렉션에 tf-idf를 사용하고 tf-idf 값에 따라 순위를 매기는 것이 좋습니다. 키워드의 실제 중요성.

json 짹짹 목록에 대한 tf-idf 값을 계산하고 유사한 짹짹을 찾는 샘플 python 솔루션을 살펴보십시오.

Github Sample

1

탄성 검색은합니다 (전경 필요 중요하다 당신이 인덱스 [1]

가 정교하게하는 방법의 부분 집합은 "중요한 키워드"를 추출 할 수 있도록 매우 특정 데이터 집합을 제공합니다 분석하려는 문서의 하위 집합) 및 배경 (전체 자료)을 선택합니다.

당신이 알고있는 것처럼, 용어를 중요한 것으로 식별하기 위해 다른 어떤 것 (예 : 일반 자료)과 비교하여 귀하의 코퍼스에 나타나는 방식을 비교해야합니다. 용어에 대한 일종의 일반적인 IDF 점수 (Reuter corpus, brown corpus, wikipedia 등)가 포함 된 아카이브를 찾을 수 있습니다. 는 다음을 수행 할 수 있습니다 전경 문서 설정 -> 모음에 배경 문서 세트 ->

[1] https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html