나는 보도 언어에서 NLP를위한 파이썬 2.7을 사용하고, 나는에 중지 단어의 목록을 만든 중지 단어 제거하는 과정에서파이썬 정규식 모듈
(Devnagari 스크립트 사용) 개행 ("\ n")으로 구분 된 파일. 코덱 모듈을 사용하여이 파일을 읽고 목록으로 변환했습니다.
def addWordBoundary(word):
return u''.join(r"\b" + word + r"\b")
reg = regex.compile(r"(%s)" % "|".join(map(addWordBoundary, stopWords)), regex.UNICODE)
내가 코퍼스 (텍스트 파일)을 읽을 코덱 모듈을 사용하여 문자열과 regex.sub (에) 한 다음 쓰기 :
raw_txt = codecs.open('stopwords.txt', 'r', 'utf-8')
stopWords = []
while(1):
line = raw_txt.readline()
if not line:
break
line = u''.join(line.strip())
stopWords.append(line)
는 지금은 일치하는 단어를 찾을 수있는 정규 표현식을 컴파일 코덱을 사용하여 파일 자체. 그러나 그것은 몇 마디를 놓쳤습니다. 나는 이유를 알 수 없었다.
fl = codecs.open('corpus.txt', 'r', 'utf-8')
rawFile = fl.read()
cleanText = reg.sub('', rawFile, regex.U)
wr = codecs.open('output.txt', 'w', 'utf-8')
wr.write(cleanText)
wr.close()
테스트의 목적은 모두 stopwords.txt로 사용하고
माब्लानिफ्रायथो
फारसेनिफ्रायबो
रावनिफ्रायबो
माब्लानिफ्राय
जेब्लानिफ्राय
을 corpus.txt를 들어 अब्लानि ्राय
इफोरनिफ्राय
नोंनिफ्रायबो
फारसेनिफ्राय
नोंनिफ्रायनो
는 경우 output.txt 파일은 빈 파일이어야하지만 다음이 포함
रावनिफ्रायबो
इफोरनिफ्राय
이 코드는 영어 텍스트 (ASCII)에서 잘 작동하므로 utf-8 처리에 문제가있을 수 있습니다. 제발 제안 해주세요.
필자는 왜 실패했는지 알지 못합니다.하지만 테스트했을 때 출력물에 더 많은 항목이있었습니다. 누락 된 모든 불용어에는 결합 문자 (예 : थ, थ + ◌ो)가 포함되어 있습니다. 아마도 단어 경계 검출기'\ b'는 문자 결합과 함께 올바르게 작동하지 않습니다. – jogojapan
@ jogojapan 나는 캐릭터를 결합하는 것이 문제라고 생각하지 않는다 : Ф + र = फ्र, न + م = नो 등등. – srajbr
http://stackoverflow.com/questions/16579113/regular-expression-doesnt-work-properly-with-turkish-characters의 중복 – prash