2016-12-27 1 views
-1

CRF 모델의 IOB 형식으로 변환해야하는 txt 파일이 있습니다.어떻게 문장의 목록을 IOB 형식으로 변환하여 출력에서 ​​문장 분리를 저장할 수 있습니까?

nltk tree2conlltags를 사용하면 토큰 화 된 글 머리 기호가있는 텍스트를 필요한 IOB 형식으로 변환 할 수 있습니다. 이

("u'Is", 'JJ', u'O') 
('Miami', 'NNP', u'B-PERSON') 
('playing', 'NN', u'O') 
('in', 'IN', u'O') 
('Washigthon', 'NNP', u'B-GPE') 
('this', 'DT', u'O') 
('month', 'NN', u'O') 
('?', '.', u'O') 

그러나 문제처럼

는 출력으로 내가 하나 개의 요소로 하나 개의 단어를 얻을,하지만 난 요소로 한 문장을 필요로한다는 것입니다.

또한 문장으로 분리 된 텍스트를 먼저 시도한 다음 토큰 화하여 문장 boundAries를 저장하지만 nltk pos 태그 작성자는 목록 유형 데이터를 허용하지 않습니다.

은 아마 내가 필요한 형식이나

+0

문장 당 하나의 요소를 원한다면 레이블은 무엇입니까? 분명히, 문장 수준에서는별로 의미가 없으므로 PoS 태그와 명명 된 엔티티는 필요하지 않습니다. 결과물이 어떻게 보이는지 보여주세요. – lenz

+0

또한, 왜 첫 번째 토큰이''''''입니까? 'repr()'이 입력 문자열에서 호출 된 것처럼 보입니다. – lenz

+0

하나의 문장을 요소로 갖고 싶지만 여전히 모든 포스트 태그 및 네거 레이블이 필요합니다. 왜냐하면 조건부 임의 필드에 필요하기 때문에 첫 번째 토큰이 "Is"가 왜 문제인지, 문장의 시작 부분이 무엇인지 이해하지 못합니다. –

답변

0

그것은 예를 들어 모든 문장에 대한 하나의 문자열로 각각 토큰, 포스 태그와 NER 레이블을 연결하여 쉽게를 얻을 수있는 새로운 방법이 있습니다. (token_wise이 예에서 데이터입니다)이 같은 :

>>> tuple(' '.join(layer) for layer in zip(*token_wise)) 
("u'Is Miami playing in Washigthon this month ?", 
'JJ NNP NN IN NNP DT NN .', 
'O B-PERSON O O B-GPE O O O') 

각 문장에 대한 것을 반복해야 할 것입니다. 하지만 이해가되지 않습니다. CRF 태그 작성자는 거대한 데이터 부족 문제가 있으므로 'O B-PERSON O O B-GPE O O O'과 같은 복잡한 라벨을 예측할 기회가 없습니다. 대부분의 레이블은 한 번만 볼 수 있으며 입력 된 문장은 더 많이 표시됩니다.

또한 IOB 형식이 아닙니다. IOB에는 요소 당 I, O 또는 B 중 하나가 있지만 이들의 조합은 없습니다.

+0

하지만이게 내가 요소 당 O, B 또는 I가있는 것입니다.하지만 이미 문제를 해결했습니다. 도움을 주셔서 감사합니다. –

관련 문제