가사 프로그램에 '구텐베르크 빈도 목록'을 입력하면 NLTK를 사용하는 영어 이외의 모든 문자를 제거 할 수 있습니까?NLTK를 사용하여 모든 영어가 아닌 문자와 단어를 제거하는 방법>
Plzz 도움말 - 카림
가사 프로그램에 '구텐베르크 빈도 목록'을 입력하면 NLTK를 사용하는 영어 이외의 모든 문자를 제거 할 수 있습니까?NLTK를 사용하여 모든 영어가 아닌 문자와 단어를 제거하는 방법>
Plzz 도움말 - 카림
내가 전에 nltk와 함께 일한 적이. 너무 좋은 해결책이있을 수 있습니다. 내 코드에서 은 단순히 다음을 수행 오전 :
가 lines
로라는 이름의 변수에 frequencyList.txt
라는 이름으로/영어가 아닌 영어 단어를 검사 할 필요가있는 파일을 읽기.
그러면 eng_words_only.txt
이라는 새 파일을 열려고합니다. 이 파일에는 영어 단어 만 들어 있습니다. 처음에이 파일은 또한 wordnet
에있는 경우이 파일이 내가 확인 frequencyList.txt
의 모든 단어를 이제 frequencyList.txt
에 존재하는 모든 영어 단어를 포함 나중에 스크립트를 실행 한 후, 비어 있습니다. 단어가있는 경우 eng_words_only.txt
파일에이 단어를 씁니다. 그렇지 않으면 아무 것도하지 않습니다. 데모 용으로 wordnet
을 사용하고 있습니다. 모든 영어 단어가 포함되어 있지 않습니다!
코드 :
from nltk.corpus import wordnet
fList = open("frequencyList.txt","r")#Read the file
lines = fList.readlines()
eWords = open("eng_words_only.txt", "a")#Open file for writing
for w in lines:
if not wordnet.synsets(w):#Comparing if word is non-English
print 'not '+w
else:#If word is an English word
print 'yes '+w
eWords.write(w)#Write to file
eWords.close()#Close the file
테스트 : 내가 먼저 다음과 같은 내용으로 frequencyList.txt
로라는 이름의 파일을 생성 : 코드를 실행에 다음
cat
meoooow
mouse
은 '당신에게 니펫을 콘솔에 다음 출력이 표시됩니다.
not cat
not meoooow
yes mouse
그러면 영어로 된 단어 만 들어있는 파일이 eng_words_only.txt
으로 생성됩니다. eng_words_only.txt
에는 mouse
단어 만 포함됩니다. 고양이가 영어 단어 인 것을 알 수 있지만 아직 eng_words_only.txt
파일에 없습니다. 이것이 워드 넷 대신에 좋은 소스를 사용해야하는 이유입니다. 참고 : python 스크립트 파일과 frequencyList.txt
은 같은 디렉토리에 있어야합니다. 또한 frequencyList.txt
대신 확인/조사하려는 파일을 사용할 수 있습니다. 이 경우 코드 스 니펫에서 파일 이름을 변경하는 것을 잊지 마십시오.
두 번째 해답 : 묻지 않았지만 여전히이 영어 단어 테스트를 수행하는 다른 방법이 있습니다.
코드는 다음과 같습니다. 여기서 wordlist-eng.txt은 영어 단어가 들어있는 파일입니다.
wordlist-eng.txt
, frequencyList.txt
및 python 스크립트를 같은 디렉토리에 보관해야합니다.eng_words_only.txt
가 frequencyList.txt
파일에 존재하는 모든 영어 단어를 포함 할 스크립트를 실행 한 후
with open("wordlist-eng.txt") as word_file:
english_words = set(word.strip().lower() for word in word_file)
fList = open("frequencyList.txt","r")
lines = fList.readlines()
fList.close()
eWords = open("eng_words_only.txt", "a")
for w in lines:
if w.strip().lower() in english_words:
eWords.write(w)
else: pass
eWords.close()
.
도움이 되었기를 바랍니다.
도와 주셔서 대단히 감사합니다. – user3541877
SO에 오신 것을 환영합니다. –
@ pss-- 길이 16 자 이상의 모든 고유 단어를 어떻게 제거 할 수 있습니까? 이 단어들의 크기를 15 문자로 줄이면서 구분하십시오. (접미사, 접미어 및 중온어 제거에 대한 힌트) fo = open(“sixteenLetter_words_only.txt”,”wb”) words = set(w.lower() for w in open('distinct_words_only.txt').read().split()) for item in english_words \t if len(item) > 15 \t \t fo.write(item) fo.close()
–
user3541877
https://stackoverflow.com/questions/how-to-ask – larsks
질문을 편집하십시오. 막연합니다. –
@pss 어떻게 막연합니까? 입력 : 구텐베르크 주파수 목록 출력 : 나는 결론이 페이지 https://stackoverflow.com/questions/how-to-ask 에 전체 물건을 읽을 때 질문 불행히도 것을 영어 사전 – user3541877