저는 nltk 라이브러리에서 새로 왔으며 분류 자에게 내 자신의 코퍼스로 일부 라벨을 가르치려고합니다.NLTK 부정적인 케이스가있는 MaxentClassifier 기차
How O
do B-MYTag
you I-MYTag
know O
, O
where B-MYTag
to O
park O
? O
(PS 이것은 단지 만들어 샘플 ...)
내가 이렇게
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0)
에 의해이 들어
이 같은 IOB 태그 파일이
그리고 작동합니다.
내 질문은 내 classifier
네거티브 케이스를 훈련시키는 방법입니다. 그래서 비슷한 파일을 IOB 태그로 사용하고이 파일이 잘못 설정되었다. (음수 가중치)
어떻게하면됩니까?
편집 : 부정 사건에 대한
예는 다음과 같습니다 그 후
How B-MYTag
do O
you O
know O
, O
where B-MYTag
to O
park O
? O
을, 어떻게 아마도 그 이유 인 MYTag ... 아니라는 것을 기억하는 기대 , 더 빨리 배우는 분류 자. 문장을 입력 할 수 있으면 프로그램에서 처리하고 결국 결과에 만족하는지 끝에 묻습니다. 나는이 텍스트가 train_set
에 추가되고, 그렇지 않으면 negative_train_set
에 추가됩니다. 이렇게하면 분류 자에게 올바른 것을 가르치는 것이 더 쉽고 빠를 것입니다.
부정적 사례의 예를 들려 줄 수 있습니까? 나는 이것이 시퀀스 태깅으로 (개념적으로) 작동하는지 의심 스럽다. 내 말은, 잘못된 주석을 통해 무엇을 배우기를 기대합니까? 양수 (B/I) 및 음수 (O) 클래스는 이미 지정된 주석에 표시되어 있습니다. – lenz
적극적인 학습 과정을 거친 것처럼 편집 내용이 들립니다. 물론 수동으로 할 수도 있습니다. 분류기가 무언가를 예측하고 레이블을 수동으로 수정하고 훈련 세트에 추가하고 재 훈련하십시오. 당신은 정정에 대해 구체적이어야합니다 : "이 문장의 레이블이 잘못되었습니다"라고 말하면, 분류 기호는 처음 세 개의 태그가 잘못되었음을 어떻게 알 수 있습니까? 네 번째 ("알고있다"에 대한 "O")는 정확합니까? – lenz
큰 훈련을 시작한 다음 수동으로 수정 한 몇 가지 예제를 방금 제안한대로 수동으로 추가하면 영향이 미미할 수 있습니다. – lenz