2017-03-22 10 views
9

우리가 만든 응용 프로그램의 경우 단어 예측을위한 간단한 통계 모델 (예 : Google Autocomplete)을 사용하여 검색을 안내합니다.그냥 다음 단어 대신 구문 예측

관련 텍스트 문서의 큰 코퍼스에서 수집 한 ngram 시퀀스를 사용합니다. 이전 N-1 단어를 고려하여 확률이 높은 순서대로 다음 단어를 제안합니다 (Katz back-off).

단일 단어 대신 여러 단어를 예측하기 위해이 내용을 확장하고자합니다. 그러나 구문을 예측할 때 접두어를 표시하지 않는 것이 좋습니다.

예를 들어, 입력 the cat을 고려하십시오.

이 경우 the cat in the hat과 같은 예측을하고 싶지 만 the cat in &이 아닌 the cat in the과 같은 예측을하고 싶습니다.

enter image description here

가정 :

  • 우리는 우리가 예를 들어 (텍스트 데이터를 태그하지 않는

  • 과거 검색 통계에 액세스 할 수없는, 우리의 부품을 모르는 음성)

일반적인 w 이런 종류의 다중 단어 예측을 할 수 있습니까? 긴 구문의 곱셈 및 덧셈 가중치를 시도했지만 Google의 가중치는 임의적이며 테스트에 적합합니다.

답변

4

이 질문의 경우 유효한 완료라고 생각되는 항목을 정의해야합니다. 그런 다음 해결 방법을 제시 할 수 있어야합니다.

"모자의 고양이"는 "그 고양이"보다 훨씬 낫습니다. 나는 이것을 "명사로 끝나야한다"또는 "지나치게 일반적으로 끝나면 안된다"라고 해석 할 수있다.

  1. 당신은 "태그 텍스트 데이터"의 사용을 제한했지만 당신은 (예를 들어, NLTK는, 적응, StanfordNLP)이 연설의 일부를 추측하는 pretrained 모델을 사용 만에 예측을 제한하려는 시도를 만들 수 완전한 명사구 (또는 명사로 끝나는 순서). 모델에 입력 된 모든 문서에 반드시 태그를 지정할 필요는 없지만 자동 완성 db에 유지하는 구문 만 태그 할 수 있습니다.

  2. 다른 방법으로는 중지 단어 (또는 매우 빈번한 단어)로 끝나는 완료를 피할 수 있습니다. "in"과 "the"는 거의 모든 영어 문서에서 나오는 단어이므로 필터링에 도움이되는 주파수 컷오프 (문서의 50 % 이상에서 발생하는 단어로 끝날 수 없음)를 실험적으로 찾을 수 있습니다. 문구를 볼 수도 있습니다. 문구의 끝 부분이 짧은 문구로 대폭적으로 많이 사용되면 사용자가 태그를 붙이는 것이 타당하지 않습니다. 사용자가 독자적으로 생각해 낼 수 있기 때문입니다.

  3. 궁극적으로, 좋은 사례와 나쁜 사례의 라벨이 지정된 집합을 만들고 단어 기능을 기반으로 감독 된 재검사자를 만들 수 있습니다. 위의 아이디어는 모두 감독 대상 모델의 강력한 기능이 될 수 있습니다 (문서 빈도 = 2, pos 태그 = 1). 이것은 일반적으로 데이터가있는 검색 엔진이이를 수행하는 방법입니다.이를 위해 검색 통계 또는 사용자가 필요하지 않으며 몇 백 가지 쿼리에 대해 상위 5 개 완성을 표시하려는 의도 만 있습니다. 자동화 된 방식으로 실행될 수있는 정식 평가를 작성하면 향후 시스템을 개선 할 때 도움이 될 것입니다. 불완전한 완료를 관찰 할 때마다 데이터베이스에 추가하고 몇 가지 레이블을 추가 할 수 있습니다. 시간이 지남에 따라 감독 방식이 향상됩니다.