RegexpTokenizer를 사용하여 텍스트를 토큰 화하려고합니다.NLTK - nltk.tokenize.RegexpTokenizer - regex가 예상대로 작동하지 않습니다.
코드 :
from nltk.tokenize import RegexpTokenizer
#from nltk.tokenize import word_tokenize
line = "U.S.A Count U.S.A. Sec.of U.S. Name:Dr.John Doe J.Doe 1.11 1,000 10--20 10-20"
pattern = '[\d|\.|\,]+|[A-Z][\.|A-Z]+\b[\.]*|[\w]+|\S'
tokenizer = RegexpTokenizer(pattern)
print tokenizer.tokenize(line)
#print word_tokenize(line)
출력 : '.' '.'
[ 'U', 'S', 'A', '백작' 'U', '.', 'S', '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' 'Do', 'Doe', 'Doe', 'Doe', '1.11', '1,000', '10', ' '-', '-', '20', '10', '-', '20']
예상 출력 :
[ '미국', '백작', 'USA', '초', '미국', '이름', '의' '.' '' 'Doe', 'Doe', 'Doe', '1.11', '1,000', '10', '-', '-', '20', ' '10 ','- ','20 ']
tokenizer가 내 토큰 "us", "US"을 왜 spiltting하는 이유는 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까?
내 정규식 : 당신이 당신의 정규식 MOD 경우 https://regex101.com/r/dS1jW9/1
'[[USA \.] {4,} | [\ w] + ''는 또한'............ '와 (과) 일치합니다. 문자 클래스에 하나의'\ w '를 넣고 문자 클래스 내부에 도트를 이스케이프 할 필요는 없다. –
동의 -하지만 테스트 데이터가 주어 졌기 때문에 (그리고 나는 더 나은 해결책을 생각하기에는 너무 게을 렀습니다.) 이것이 제가 준 것입니다 :) –