기계 학습은 검색 엔진 설계에 어떻게 통합됩니까?


15

현재 Apache Lucene을 기반으로 작은 사내 검색 엔진을 구축 중입니다. 그 목적은 간단합니다. 일부 키워드를 기반으로 회사 내부에서 작성된 일부 기사를 제안합니다. 상당히 표준적인 TF-IDF 스코어링을 기본 메트릭으로 사용하고 있으며 그 위에 자체 스코어링 메커니즘을 구축했습니다. 순위가 엉망으로 보이는 코너 사례를 제외하고는 모두 훌륭하게 작동하는 것 같습니다.

그래서 내가 계획하고있는 것은 검색 결과 페이지에 작은 관련성 / 관련성이 없음 링크를 추가하여 사용자가 결과가 처음에 포함되어야했는지에 대한 인식에 따라 그중 하나를 클릭 할 수 있도록하는 것입니다.

내 생각

  1. 이러한 관련성 / 관련성이 없음을 레이블로 취급하고 교육 데이터를 작성하십시오.
  2. 이 데이터를 사용하여 분류기를 훈련시킵니다 (예 : SVM)
  3. 이 모델을 검색 엔진에 통합하십시오. 즉, 모든 새로운 결과는 분류자를 통과하고 관련 여부에 대한 레이블이 지정됩니다.

이 접근법은 나에게 직관적으로 보이지만 실제로 작동하는지 확실하지 않습니다. 두 가지 구체적인 질문이 있습니다.

  1. 추출해야 할 모든 기능은 무엇입니까?
  2. 기계 학습 구성 요소를 검색 엔진에 통합하는 더 좋은 방법이 있습니까? 마지막으로 비즈니스 로직과 사용자 피드백을 바탕으로 순위 기능을 "학습"하는 것이 목표입니다.

4
나는 이런 일을 한 번 해냈고 사용자는 그것을 싫어했기 때문에 끌었습니다. 문제는 사용자 행동이었습니다. 사용자는 용어를 변경하여 검색 결과의 약점에 적응 한 다음 해당 용어를 계속 재사용합니다. 시스템은 품목의 순위를 조정하는 데 응답했으며 선호하는 용어는 다른 결과를 생성하기 시작했습니다. 이것은 사용자를 화나게했다. 학습이 더 똑똑하다는 의미는 아닙니다.;)
Reactgular

다음은 elasticsearch 및 angularjs를 사용한 구현입니다. 필요한 설명도 포함되어 있습니다.- machinelearningblogs.com
2016/

답변:


15

(1) 어떤 기능을 추출해야합니까?

먼저, 문서를 분류하지 않는다는 것을 인식하십시오. (문서, 쿼리) 쌍을 분류하고 있으므로 일치하는 정도를 나타내는 기능을 추출해야합니다.

순위를 정하는 방법에 대한 표준 접근 방식은 다양한 검색 엔진 설정 (예 : tf-idf, BM-25 등)에 대해 쿼리를 실행 한 다음 유사성 점수에 대한 모델을 훈련하지만 작은 도메인 별 SE, 당신은 같은 기능을 가질 수 있습니다

  • 각 용어에 대해 해당 용어가 쿼리와 문서 모두에서 발생하는지 여부를 나타내는 부울입니다. 또는 부울이 아니지만 문서에서 실제로 발생하는 쿼리 용어의 tf-idf 가중치입니다.
  • Jaccard 또는 Tanimoto 와 같은 다양한 오버랩 메트릭

(2) 기계 학습 구성 요소를 검색 엔진에 통합하는 더 좋은 방법이 있습니까? 마지막으로 비즈니스 로직과 사용자 피드백을 바탕으로 순위 기능을 "학습"하는 것이 목표입니다.

이것은 매우 광범위한 질문이며, 답은 얼마나 많은 노력을 기울이고 싶은가에 달려 있습니다. 가장 먼저 떠오르는 개선점은 분류기의 이진 관련 판단이 아니라 실제 의사 결정 기능을 사용해야한다는 것입니다. 필터링 대신 실제로 순위를 지정할 수 있습니다. SVM의 경우 결정 기능은 초평면까지의 서명 된 거리입니다. 좋은 기계 학습 패키지에는 그 가치를 얻기위한 인터페이스가 있습니다.

그 외에도 순위를 매기려면 쌍별 및 목록 별 학습을보십시오. 당신이 제안하는 것은 소위 pointwise 접근법입니다. IIRC, pairwise는 실제로 훨씬 더 잘 작동합니다. 그 이유는 페어 단위 순위를 사용하면 클릭 수가 훨씬 적기 때문입니다. 사용자가 문서를 관련성 / 관련성이없는 것으로 레이블 지정하는 대신 "관련성"버튼 만 제공하면됩니다. 그런 다음 document1이 document2보다 쿼리에 더 관련성 이 있는지 또는 그 반대로 되는지 알려주는 3 진 (document1, document2, query)의 이진 분류기를 학습합니다 . 사용자가 관련 순위에서 문서 4 (예 : 문서 4)에 레이블을 지정하면 6 가지 샘플을 배울 수 있습니다.

  • 문서 4> 문서 3
  • 문서 4> 문서 2
  • 문서 4> 문서 1
  • 문서 1 <문서 4
  • document2 <document4
  • document3 <document4

그래서 당신은 무료로 네거티브를 얻습니다.

(이들 모두는 단지 제안 일 뿐이며,이 중 어느 것도 시도하지 않았습니다. 나는 사람들이 순위를 매기는 것을 연구 한 연구 그룹에서 일한 적이 있습니다. 나는 다른 사람의 논문을 한 그룹의 독서 그룹에 대해 발표했습니다. 슬라이드 가 도움이 될 수 있습니다.)


+1 감사합니다. 당신이 나를 도와 준 것은 이번이 두 번째입니다! 이것을 소화하는 데 몇 시간이 걸립니다. :)
Legend

4
그것은 훌륭한 답변입니다. 약간의 조정을 제안하고 싶습니다. UX 관점에서는 "관련"버튼보다 "관련이없는"버튼을 사용하여 사용자가 결과에 점수를 매길 가능성이 훨씬 높습니다. 찾고자하는 것을 찾았을 때 누가 점수를 매길까요? 그들은 원하는 것을 찾지 못했을 때 "불평의 기회"처럼 보이는 버튼을 눌렀을 가능성 이 훨씬 더 높습니다. 그 시점에서 시스템을 개선하는 것이 실제로 현재 목표와 일치하기 때문입니다.
Racheet

4
tl; dr 하나의 입력 만 사용하려는 경우 "관련이없는"것으로 만들면 사람들이 답답할 때 클릭 할 가능성이 높아집니다.
Racheet

"목록 방식"접근 방식은 무엇입니까? 또한 무료로 3 ~ 6 개의 예를 의미 했습니까? (마지막 3은 처음 3
max
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.