저는 텍스트 마이닝과 NLP 관련 새로운 것들이 있습니다. 나는 몇 가지 문서에서 정보를 추출하려고하는 작은 프로젝트에서 작업하고 있습니다. 기본적으로 pos 태깅을하고 나서 패턴을 찾기 위해 청크를 사용하고 있습니다. 이 POS 태깅을하기 전에 Stopwords를 사용해야합니까? Stopwords를 사용하면 POS Tagger의 정확성에 영향을 줍니까?POS 태깅 전에 스팸 필터링을 사용해야합니까?
답변
@ 렌츠는 무엇을 말했습니다. 당신이 당신이 청크를 훈련하고 청결한 원본에 그것을 훈련하고 (그 후에 그것을 사용하기 위하여) 결정하면 않는 한, 그 문제에 관해서는 표를 붙이기 전에, 또는 당신이 청크하기 전에 금지 어구를 제거하지 말라. 그러나 나는 그 중 하나를 권하고 싶지 않다. 스톱 워드 제거는 TF-IDF와 같은 단어 분리 과정에 적합하지만 결정자와 전치사와 같은 일반적인 단어는 문장 구조 및 따라서 말의 일부에 대한 필수 단서를 제공합니다. 문장 단위를 감지하려면 제거하지 마십시오.
하지만 왜 내 말을 들으십니까? 태그가 추가 된 데이터를 가져 와서 스톱 워드 제거가 있거나없는 스 태거와 청크를 평가하면 쉽게 직접 확인할 수 있습니다. 어쨌든 나머지 파이프 라인에 대해서는이 작업을 수행하는 것이 좋습니다.
먼저 코퍼스 및 중지 목록
>>> import nltk
>>> nltk.download('stopwords')
>>> nltk.download('cess_esp')
로드를 분할
>>> from nltk.corpus import cess_esp as cess
>>> from nltk.corpus import stopwords
# Import the function to train a tagger.
>>> from nltk import UnigramTagger, BigramTagger
# Load the Spanish stopwords
>>> stoplist = stopwords.words('spanish')
# Load the Spanish tagger
>>> cess_sents = cess.tagged_sents()
NLTK
의 래퍼 코퍼스로 얻을 :의이 술래를 테스트/훈련 예를 들어 this를 사용하자 열차/시험 세트
>>> len(cess_sents)
6030
>>> test_set = cess_sents[-int(6030/10):]
>>> train_set = cess_sents[:-int(6030/10)]
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(10)[-2:]
[8, 9]
>>> range(10)[:-2]
[0, 1, 2, 3, 4, 5, 6, 7]
불용 단어가없는 대체 train_set을 만듭니다.
>>> train_set[0]
[(u'El', u'da0ms0'), (u'grupo', u'ncms000'), (u'estatal', u'aq0cs0'), (u'Electricit\xe9_de_France', u'np00000'), (u'-Fpa-', u'Fpa'), (u'EDF', u'np00000'), (u'-Fpt-', u'Fpt'), (u'anunci\xf3', u'vmis3s0'), (u'hoy', u'rg'), (u',', u'Fc'), (u'jueves', u'W'), (u',', u'Fc'), (u'la', u'da0fs0'), (u'compra', u'ncfs000'), (u'del', u'spcms'), (u'51_por_ciento', u'Zp'), (u'de', u'sps00'), (u'la', u'da0fs0'), (u'empresa', u'ncfs000'), (u'mexicana', u'aq0fs0'), (u'Electricidad_\xc1guila_de_Altamira', u'np00000'), (u'-Fpa-', u'Fpa'), (u'EAA', u'np00000'), (u'-Fpt-', u'Fpt'), (u',', u'Fc'), (u'creada', u'aq0fsp'), (u'por', u'sps00'), (u'el', u'da0ms0'), (u'japon\xe9s', u'aq0ms0'), (u'Mitsubishi_Corporation', u'np00000'), (u'para', u'sps00'), (u'poner_en_marcha', u'vmn0000'), (u'una', u'di0fs0'), (u'central', u'ncfs000'), (u'de', u'sps00'), (u'gas', u'ncms000'), (u'de', u'sps00'), (u'495', u'Z'), (u'megavatios', u'ncmp000'), (u'.', u'Fp')]
>>> train_set_nostop[0]
[(u'grupo', u'ncms000'), (u'estatal', u'aq0cs0'), (u'Electricit\xe9_de_France', u'np00000'), (u'-Fpa-', u'Fpa'), (u'EDF', u'np00000'), (u'-Fpt-', u'Fpt'), (u'anunci\xf3', u'vmis3s0'), (u'hoy', u'rg'), (u',', u'Fc'), (u'jueves', u'W'), (u',', u'Fc'), (u'compra', u'ncfs000'), (u'51_por_ciento', u'Zp'), (u'empresa', u'ncfs000'), (u'mexicana', u'aq0fs0'), (u'Electricidad_\xc1guila_de_Altamira', u'np00000'), (u'-Fpa-', u'Fpa'), (u'EAA', u'np00000'), (u'-Fpt-', u'Fpt'), (u',', u'Fc'), (u'creada', u'aq0fsp'), (u'japon\xe9s', u'aq0ms0'), (u'Mitsubishi_Corporation', u'np00000'), (u'poner_en_marcha', u'vmn0000'), (u'central', u'ncfs000'), (u'gas', u'ncms000'), (u'495', u'Z'), (u'megavatios', u'ncmp000'), (u'.', u'Fp')]
>>>
기차 술래 :
>>> uni_tag = UnigramTagger(train_set)
기차 중지 단어없이 신체와 술래 :
>>> train_set_nostop = [[(word,tag) for word, tag in sent if word.lower() not in stoplist] for sent in train_set]
차이를 참조
>>> uni_tag_nostop = UnigramTagger(train_set_nostop)
분할 단어에 test_set 및 태그 :
>>> test_words, test_tags = zip(*[zip(*sent) for sent in test_set])
태그 테스트 문장 :
>>> uni_tag.tag_sents(test_words)
>>> uni_tag_nostop.tag_sents(test_words)
정확성 (그냥 지금은 진정한 양성을하자)을 평가 :
>>> sum([ sum(1 for (word,pred_tag), (word, gold_tag) in zip(pred,gold) if pred_tag==gold_tag) for pred, gold in zip(tagged_sents, test_set)])
11266
>>> sum([ sum(1 for (word,pred_tag), (word, gold_tag) in zip(pred,gold) if pred_tag==gold_tag) for pred, gold in zip(tagged_sents_nostop, test_set)])
5963
참고 여기에 때를 부당 많은 일이있다 태거를 훈련하기 전에 다음 단어를 삭제했습니다.
귀하의 교육 세트는 자연스럽게 작을 것입니다.문장에서 단어 중지 단어
- 을 포함 않습니다 테스트 세트 이후 술래의 정확성을 줄일 술래 모든 중지 단어에 대해 없음을 반환하지 않습니다 따라서 중지 단어의 태그를 배우고되지 않습니다
중지 단어를 제거한 후 작은
더 높은 순위 ngram을 학습 할 때, 불용어 없이는 전혀 이해가되지 않을 수 있습니다. 그 문법이나 감각이 정확성을 설명하지는 않습니다 (특히 오늘날의 NLP에서). 예 : , "고양이가 탁자 위에있다"-> "고양이 탁자"는 불용 단어가 없다.
그러나 @alexia로
모델 일명 분산 된 모델로, 일명. "당신은 이웃에 의해 단어를 알 수있다"(백 - 중 - 단어 기반 벡터 공간 모델, 지적, 일명. 비 신경 예상 임베딩 모델), 중지 단어를 제거하면 정확도 측면에서 약간의 마일리지가 발생할 수 있습니다. 그러나 TF-IDF의 경우 (마술처럼) 마 법적 인 것은 대부분의 문서에서 너무 자주 나타나고 각 문서를 다른 것으로 만들기위한 차별 속성이 적기 때문에 불용어가 자동으로 낮은 TF-IDF 점수를 갖게된다는 것입니다 그것들은 그렇게 중요하지 않습니다. 그것은 마술을하는 IDF 부분입니다).- 1. jvntextpro로 POS 태깅
- 2. Weka POS 태깅 + 토큰 화
- 3. NLTK를 사용하는 POS 태깅 POS 텍스트
- 4. Mallet POS 태깅 학습 시간
- 5. 맞춤 NER 및 POS 태깅
- 6. POS 태깅 등의 약어는 무엇을 의미합니까?
- 7. Baum Welch 알고리즘의 구현 디버깅 (POS 태깅 용)
- 8. POS 태깅 성능이 느립니다. 어떤 종류의 예열을 할 수 있습니까?
- 9. NLTK (pos 태깅)를 사용하여 동사의 부정형을 얻는 방법
- 10. stanfordNLP에서 아랍어 POS POS 태깅을 구성하는 방법
- 11. Zend_Mail을 사용하여 보내기 전에 스팸 확인
- 12. 이메일이 스팸 폴더에 도달하기 전에 차단하기
- 13. 변환 기반 품사 태깅 (브릴 태깅)
- 14. android의 지오 태깅 및 지오 태깅
- 15. POS 태깅으로 중지 단어를 제거해야합니까?
- 16. 스팸 필터링을위한 베이지안 네트워크
- 17. 클라이언트 측 필터링을 수행 할 때 어떤 방법을 사용해야합니까?
- 18. 언제 소스 필터링을 사용하고 필드를 사용해야합니까? 탄성 검색
- 19. 스팸
- 20. "addClass"전에 "hasClass"를 사용해야합니까?
- 21. Xcode에서 아카이브 전에 정리를 사용해야합니까?
- 22. 기사의 개념적 태깅
- 23. Mac OSX에서 이탈리아어 용 POS-Tagging API
- 24. POS 프린터에서 간단한 작업을 위해 VB.net 2010 PointOfService.POSPrinter 클래스를 사용해야합니까?
- 25. 스팸 어쌔신 HTML_IMAGE_ONLY
- 26. 스팸 확인, 스팸 점수 방법?
- 27. jquery 수학 플립 pos neg 및 pos negate pos
- 28. Android에서 Sentiment Analysis (POS 태깅 등)를 수행 할 수 있습니까?
- 29. detailsview의 SQL 필터링을 수행하기 전에 쿼리 문자열의 유효성 검사
- 30. 앱을 게시하기 전에 Android 마켓 필터링을 테스트하려면 어떻게해야합니까?
POS 태그 지정은 시퀀스 분류로 수행되므로 중지 단어를 제거하여 시퀀스를 변경하면 남은 단어의 POS 태그가 변경 될 가능성이 큽니다. POS 태그 작성자는 일반적으로 불용어를 포함한 전체 텍스트에 대해 교육을받습니다. – lenz