J'utilise nltk
le movie_reviews
corpus de la bibliothèque qui contient un grand nombre de documents. Ma tâche est d'obtenir des performances prédictives de ces revues avec un prétraitement des données et sans prétraitement. Mais il y a un problème, dans les listes documents
et documents2
j'ai les mêmes documents et j'ai besoin de les mélanger afin de garder le même ordre dans les deux listes. Je ne peux pas les mélanger séparément car chaque fois que je mélange la liste, j'obtiens d'autres résultats. C'est pourquoi je dois mélanger les fichiers à la fois avec le même ordre car je dois les comparer à la fin (cela dépend de l'ordre). J'utilise python 2.7
Exemple (en réel, les chaînes sont tokenisées, mais ce n'est pas relatif):
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')]
Et j'ai besoin d'obtenir ce résultat après avoir mélangé les deux listes:
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')]
J'ai ce code:
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