[PYTHON] Filtrage de texte avec des baies naïves de sklearn

from sklearn.datasets import fetch_20newsgroups Utilisons l'ensemble de données de.

Code pour sortir la catégorie

from pprint import pprint
pprint(list(newsgroups_train.target_names))

Cela semble être une catégorie d'articles, mais au début, ce qui était écrit n'était pas clair.

['alt.atheism',
 'comp.graphics',
 'comp.os.ms-windows.misc',
 'comp.sys.ibm.pc.hardware',
 'comp.sys.mac.hardware',
 'comp.windows.x',
 'misc.forsale',
 'rec.autos',
 'rec.motorcycles',
 'rec.sport.baseball',
 'rec.sport.hockey',
 'sci.crypt',
 'sci.electronics',
 'sci.med',
 'sci.space',
 'soc.religion.christian',
 'talk.politics.guns',
 'talk.politics.mideast',
 'talk.politics.misc',
 'talk.religion.misc']

Quand je l'ai étudié, il s'est avéré être un protocole de nouvelles sur Internet.

Lecture de groupes de nouvelles fj.comp.applications.excel, fj.comp.oldies, fj.comp.misc, fj.os.ms-windows.win95, fj.os.msdos, fj.net.providers, fj.net.words, fj.life.hometown.hokkaido, fj.jokes.d, fj.rec.autos, fj.rec.motorcycles, fj.news.group.*, fj.news.policy, fj.news.misc, fj.news.adm, fj.news.net-abuse, fj.questions.fj, fj.questions.internet, fj.questions, misc, fj.sci.chem, fj.engr.misc http://www2s.biglobe.ne.jp/~kyashiki/fj/arukikata/WonderfulFj.html

Network News Transfer Protocol était une nouvelle qui utilisait fj (groupe de discussion).

sample.py


import numpy as np
from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
import nltk
from pprint import pprint

def stopwords():
    symbols = ["'", '"', '`', '.', ',', '-', '!', '?', ':', ';', '(', ')', '*', '--', '\\']
    stopwords = nltk.corpus.stopwords.words('english')
    return stopwords + symbols

newsgroups_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes'))
newsgroups_test  = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes'))

#Afficher la catégorie d'actualités
pprint(list(newsgroups_train.target_names))
#Données d'article
#print(newsgroups_train.data)

#Créer la classe CountVectorizer
vectorizer = CountVectorizer(stop_words=stopwords())
#print(vectorizer)
#Faire un dictionnaire de vocabulaire
vectorizer.fit(newsgroups_train.data)

# Train
#Remplacer la matrice des termes du document par X
X = vectorizer.transform(newsgroups_train.data)
# print(newsgroups_train.target)
y = newsgroups_train.target
# print(X.shape)

clf = MultinomialNB()
clf.fit(X, y)
print(clf.score(X,y))

# Test
X_test = vectorizer.transform(newsgroups_test.data) 
y_test = newsgroups_test.target

print(clf.score(X_test, y_test))

スクリーンショット 2016-06-24 23.23.53.png

Données: taux de réponse correct 60% Données de test: taux de réponse correct 80%

Il paraît que.

Je l'ai utilisé comme référence. Cela a été très utile. http://qiita.com/kotaroito/items/76a505a88390c5593eba

Recommended Posts

Filtrage de texte avec des baies naïves de sklearn
Classification des textes du défi par Naive Bayes avec sklearn
Implémenter Naive Bayes dans Python 3.3
GOTO en Python avec Sublime Text 3
Introduction aux baies non paramétriques
Apprentissage profond du noyau avec Pyro
[Python] Estimation bayésienne avec Pyro
[Python] Modèle gaussien mixte avec Pyro
Filtrage de texte avec des baies naïves de sklearn
Lire des caractères dans des images avec Python OCR
J'ai essayé de juger Tundele avec Naive Bays
Texte de cluster en Python
Traitement de texte avec Python
Naive Bays (classification multi-classes)
Text mining avec Python-Scraping-
Pythonbrew avec Sublime Text
Co-filtrage avec PySpark
Flux d'extraction de texte au format PDF avec l'API Cloud Vision