파이썬에서 nltk로 정규 표현식 토크 나이저를 구현하고 싶지만 다음과 같은 문제점이 있습니다. 내 정규식을 작성하려면 this page을 사용합니다. 올바른 nltk 정규식 토크 나이저를 파이썬으로 작성하려면 어떻게해야합니까?
import string
import nltk
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
def preprocess(sentence):
sentence = sentence.lower()
pattern = r'''(?x) # set flag to allow verbose regexps
(?:[A-Z]\.)+ # abbreviations, e.g. U.S.A.
| \w+(?:-\w+)* # words with optional internal hyphens
| \$?\d+(?:\.\d+)?%?
| \$?\d+%?
|/\m+(?:[-'/]\w+)*
'''
tokenizer = RegexpTokenizer(pattern)
tokens = tokenizer.tokenize(sentence)
print tokens
str= 'i have one 98% 0.78 gener-alized 22 rule /m/0987hf /m/08876 i nees packages'
preprocess(str)
나는 내가 숫자를 제거하려면 나는 정규 표현식에 무엇을 작성해야,
['i', 'have', 'one', '98%', '0.78', 'gener_alized', '22', 'rule', '/m/0987hf', '/m/08876', 'l', 'need', 'packages' ]
또한이 결과를 원하는이
['i', 'have', 'one', '98', '0', '78', 'gener-alized', '22', 'rule', '/m/0987hf', '/m/08876', 'i', 'nees', 'packages']
있어?
는 Btw는 : 귀하의 약어 서브 패턴'(? :. [AZ] \) +는'결코 당신이 경우에 발생하려고하지 않습니다 소문자로 된 문장을 토큰 화자에게 보냅니다. – lenz