좋은 단어 중지 목록을 만드는 방법


9

중지 단어 목록을 큐 레이트하는 방법에 대한 힌트를 찾고 있습니다. 누군가가 사전 처리 및 필터링을 위해 데이터 세트 자체에서 중지 단어 목록을 추출하는 좋은 방법을 알고 있거나 추천 할 수 있습니까?

자료:

수년에 걸쳐 가변 길이 (검색어 및 전체 문장 (최대 200 자))의 방대한 양의 인간 텍스트 입력. 이 텍스트에는 봇으로부터의 기계 입력, 한 단어, 어리석은 검색, 제품 검색과 같은 많은 스팸이 포함되어 있으며, 그중 일부만이 유용 할 것 같습니다. 나는 때때로 사람들이 정말로 멋진 질문을함으로써 내 편을 찾는다는 것을 깨달았습니다. 이 질문은 너무 멋져서 사람들이 시간이 지남에 따라 검색하는 방법과 사람들이 내 웹 사이트를 사용하는 데 관심이있는 주제를 자세히 살펴볼 가치가 있다고 생각합니다.

내 문제:

전처리 과정 (예 : 스팸 삭제)으로 어려움을 겪고 있습니다. 나는 이미 웹 (NLTK 등)에서 몇 가지 중지 단어 목록을 시도했지만 이것들은이 데이터 세트에 대한 나의 요구를 실제로 돕는 것은 아닙니다.

당신의 아이디어와 토론에 감사드립니다!


1
Python NLTK 모듈은 스톱 워드 데이터를 제공하며 데이터 세트에 대한 추가 정보를 더 잘 제공하는 데 도움이되지 않는 경우 제공됩니다. 귀하의 경우에 도움이되지 않은 이유는 무엇입니까?
Kasra Manshaei

@kasramsh :이 SW를 필터링 할 때 스팸이 크게 필터링되지 않았다는 인상을 받았습니다. 그 이유는 이러한 목록이 자연적인 텍스트로 생성되었으므로 (확실하지 않음) 검색 단어 및 사이트 쿼리에는 사용할 수 없기 때문입니다. 검색 문자열 유사성을 기반으로 클러스터링 할 때와 마찬가지로 스팸이 엔트로피 수준에서 강한 영향을 미치므로 최종 결과를 혼합하고 있다는 인상을 받았습니다 :-/.
PlagTag

1
@PlagTag가 무엇인지 이해하지 못한다고 생각 stop words합니다. Stop-wrods는 일부 언어에서 가장 일반적인 단어 목록입니다 (예 I: the, a등). 어떤 텍스트가 스팸인지 아닌지를 식별하는 알고리즘을 시작하기 전에 텍스트에서이 단어를 제거하면됩니다. 어떤 텍스트가 스팸인지 식별하는 데 도움이되지 않았으며 학습 알고리즘을 향상시킬 수 있습니다.
itdxer

@itdxer, 귀하의 의견에 감사드립니다. 나는 여기서 더 넓은 의미로 스톱 워드라는 용어를 사용했다. ;-) 문제까지 삭제 해 주셔서 감사합니다
PlagTag

답변:


5

한 가지 방법은 tf-idf 점수 를 사용하는 것 입니다. 대부분의 쿼리에서 발생하는 단어는 좋은 검색어와 나쁜 검색어를 구분하는 데 거의 도움이되지 않습니다. 그러나 좋은 쿼리를 나쁜 쿼리와 구별하는 데 더 중요 할 수있는 소수의 쿼리 (높은 idf 또는 역 문서 빈도)에서만 매우 자주 발생하는 쿼리 (높은 tf 또는 term-frequency).


thx 많이, 나는 이것을 시도하고 여기에보고합니다!
PlagTag

실제로 혼자 높은 IDF의 점수는 트릭 할 것
CpILL

2

응용 프로그램에 따라 다릅니다.

주제 모델링을 수행 할 때 기본 중지 단어를 먼저 시도하십시오. 많은 주제에서 눈에 띄게 나타나는 단어가있을 때 (나의 모호한 공식을 주목하십시오) 추가 단어에 대한 좋은 후보입니다.

예를 들어, 그림과 표 자료를 포함하는 텍스트가 포함 된 모음에서 "fig", "figure", "tab"또는 "table"이라는 단어는 좋은 추가 중지 단어입니다. 결과적으로 주제가보다 명확 해집니다.


1

TFIDF (용어 빈도 역 문서 빈도)를 사용하면 목적이 해결됩니다. 문서의 각 단어에 대한 TFIDF 점수를 얻고 점수를 기준으로 단어를 정렬하면 데이터에서 중요한 단어를 선택할 수 있습니다.


1

내가 스톱 워드 목록을 작성하는 데 사용한 접근법은 텍스트 데이터에서 로지스틱 회귀 모델 (해석 가능성으로 인해)을 작성하고 훈련시키는 것입니다. 각 토큰에 대한 계수의 절대 값을 가져옵니다. 그런 다음 토큰 계수의 절대 값을 내림차순으로 정렬하십시오. 그런 다음 계수가 절대 값이 높거나 다른 기준을 충족시키는 스톱 워드가 될 수있는 계수 절대 값이 높은 모든 토큰 목록을 작성하십시오. 그 목록은 당신의 중지 단어 목록입니다. 그런 다음 해당 중지 단어 목록을이 유형의 다른 문서 세트 (테스트 세트와 같은 종류)에 적용하여 제거하면 테스트 세트 모델의 정확성, 정밀도 또는 리콜이 증가하는지 확인할 수 있습니다.

이 전략은 스톱 워드 목록을 작성할 때 토큰의 영향을 고려하기 때문에 효과적입니다.


0

스톱 워드는 어느 시점에서 솔루션의 일부일 수 있지만 키는 아닙니다. 어쨌든 주요 언어에 대해 유용한 중지 단어 목록이 존재하는 경우 도메인별로 고유하지 않아야합니다.

또한 TD-IDF 만 사용하는 것이 실제로 정확하다고 생각하지 않습니다. 품질이 낮은 문자열에는 매우 드문 (잠재적으로 쓰레기) 단어가있을 수 있습니다.

어떤 정확한 기능이 유용한 지 추측하는 대신 : 데이터 중 일부를 임의로 선택하고 수동으로 레이블을 지정하여 데이터 세트를 작성하는 것으로 시작합니다 ( good또는 또는 bad0.0 또는 1.0의 스케일로). 그런 다음 많은 기능 (길이, 단어 수 (토큰), 스팸 점수, URL 포함 또는 봇어 문자 포함 여부, 감지 된 언어, 물음표가 있는지 여부, 대문자가 있는지 여부 등)을 추출하는 코드를 작성하십시오. 또한 쿼리를 한 사용자의 geoIP 국가, 사용자의 로그인 여부, 사용자 계정의 나이 등 비언어적 기능을 포함하는 것을 잊지 마십시오. 따라서이 시점에서 방대한 테이블 / CSV와 추가 한 레이블에 대해 하나의 추가 열이있는 작은 테이블이 있습니다.

그런 다음 레이블이 지정된 예제를 사용하여 일부 기계 학습 패키지를 학습하여 충분히 정확한 모델을 작성하십시오. 그런 다음 해당 모델이 나머지 데이터에서 실행되도록하십시오.

너무 많은 코드를 작성하지 않으려면 해당 기능을 CSV 형식으로 가져 와서 Google Prediction API의 스프레드 시트 인터페이스에 제공하면됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.