많은 문서가 포함 된 nltk
도서관의 movie_reviews
코퍼스를 사용하고 있습니다 . 내 임무는 데이터를 사전 처리하고 사전 처리하지 않고 이러한 리뷰의 예측 성능을 얻는 것입니다. 그러나 목록에, 문제가 documents
와 documents2
나는 같은 문서가 나는 두 목록에 같은 순서를 유지하기 위해 그들을 셔플 필요가있다. 목록을 섞을 때마다 다른 결과가 나오기 때문에 따로 섞을 수 없습니다. 그래서 결국 비교가 필요하기 때문에 (순서에 따라 다름) 같은 순서로 한 번에 섞어 야합니다. 파이썬 2.7을 사용하고 있습니다.
예 (실제로는 토큰 화 된 문자열이지만 상대적이지 않음) :
documents = [(['plot : two teen couples go to a church party , '], 'neg'),
(['drink and then drive . '], 'pos'),
(['they get into an accident . '], 'neg'),
(['one of the guys dies'], 'neg')]
documents2 = [(['plot two teen couples church party'], 'neg'),
(['drink then drive . '], 'pos'),
(['they get accident . '], 'neg'),
(['one guys dies'], 'neg')]
그리고 두 목록을 섞은 후이 결과가 필요합니다.
documents = [(['one of the guys dies'], 'neg'),
(['they get into an accident . '], 'neg'),
(['drink and then drive . '], 'pos'),
(['plot : two teen couples go to a church party , '], 'neg')]
documents2 = [(['one guys dies'], 'neg'),
(['they get accident . '], 'neg'),
(['drink then drive . '], 'pos'),
(['plot two teen couples church party'], 'neg')]
이 코드가 있습니다.
def cleanDoc(doc):
stopset = set(stopwords.words('english'))
stemmer = nltk.PorterStemmer()
clean = [token.lower() for token in doc if token.lower() not in stopset and len(token) > 2]
final = [stemmer.stem(word) for word in clean]
return final
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
documents2 = [(list(cleanDoc(movie_reviews.words(fileid))), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
random.shuffle( and here shuffle documents and documents2 with same order) # or somehow