Il s'agit du 70e enregistrement de 100 Language Processing Knock 2015. Fondamentalement, c'était presque la même chose que "Traitement du langage amateur 100 coups", donc je ne l'ai pas posté dans le bloc, mais Concernant "Chapter 8: Machine Learning", je l'ai posté parce que j'y ai sérieusement travaillé et que je l'ai changé dans une certaine mesure. Je vais. J'utiliserai principalement Stanford NLP.
Lien | Remarques |
---|---|
070.Obtention et mise en forme des données.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:70 | Je vous suis toujours redevable de 100 coups de traitement linguistique |
Premiers pas avec Stanford NLP avec Python | Il était facile de comprendre la différence avec la PNL de Stanford Core |
type | version | Contenu |
---|---|---|
OS | Ubuntu18.04.01 LTS | Il fonctionne virtuellement |
pyenv | 1.2.15 | J'utilise pyenv car j'utilise parfois plusieurs environnements Python |
Python | 3.6.9 | python3 sur pyenv.6.J'utilise 9 3.7 ou 3.Il n'y a aucune raison profonde de ne pas utiliser la série 8 Les packages sont gérés à l'aide de venv |
Dans ce chapitre, [jeu de données de polarité des phrases] de Movie Review Data publié par Bo Pang et Lillian Lee. v1.0](http://www.cs.cornell.edu/people/pabo/movie-review-data/rt-polaritydata.README.1.0.txt) est utilisé pour rendre la phrase positive ou négative. Travaillez sur la tâche (analyse de polarité) à classer comme (négative).
En utilisant Corriger les données de réponse de l'analyse de polarité pour les phrases, corrigez les données de réponse comme suit. Créez (sentiment.txt).
- Ajoutez la chaîne "+1" au début de chaque ligne dans rt-polarity.pos (étiquette de polarité "+1" suivie d'un espace suivi du contenu de l'instruction positive)
- Ajoutez la chaîne "-1" au début de chaque ligne dans rt-polarity.neg (étiquette de polarité "-1" suivie d'un espace suivi d'une déclaration négative)
- Concaténez le contenu de 1 et 2 ci-dessus et triez les lignes au hasard
Après avoir créé> sentiment.txt, vérifiez le nombre d'exemples positifs (phrases positives) et le nombre d'exemples négatifs (phrases négatives).
Précautions pour le fichier à lire
La structure des dossiers est la suivante dans le répertoire Jupyter Notebook. Données originales sont décompressées et placées.
└── rt-polaritydata
├── rt-polarity.neg
└── rt-polarity.pos
import codecs
import random
FNAME_SMT = 'sentiment.txt'
pos_prefix = '+1'
neg_prefix = '-1'
result = []
def read_file(fname, prefix):
#Non confirmé s'il peut être lu par la fonction ouverte sans utiliser de codecs()
with codecs.open(fname, encoding='cp1252') as file: #L'encodage est Windows-1252
return ['{0} {1}'.format(prefix, line.strip()) for line in file]
#Lecture positive
result.extend(read_file('./rt-polaritydata/rt-polarity.pos', pos_prefix))
#Lecture négative
result.extend(read_file('./rt-polaritydata/rt-polarity.neg', neg_prefix))
random.shuffle(result)
with open(FNAME_SMT, 'w') as file_out:
file_out.write('\n'.join(result))
#Vérifiez le numéro
cnt_pos = 0
cnt_neg = 0
with open(FNAME_SMT) as file:
for line in file:
if line.startswith(pos_prefix):
cnt_pos += 1
elif line.startswith(neg_prefix):
cnt_neg += 1
print('pos:{}, neg:{}'.format(cnt_pos, cnt_neg))
C'est essentiellement la lecture et l'écriture de fichiers, donc je n'ai pas fait grand-chose pour le mentionner.
J'utilise la bibliothèque codecs
pour ouvrir le fichier, mais ce n'est qu'une copie de la partie pertinente de 100 coups de traitement de langue amateur: 70 Par conséquent, je n'ai pas vérifié si cela est possible avec la fonction normale «ouvrir».
Cependant, je ne voulais pas utiliser à nouveau la bibliothèque codecs
dans les programmes suivants, je l'ai donc sauvegardée en UTF-8. Même ainsi, les caractères contenant Umlaut sont enregistrés correctement.
Une fois exécutée, la dernière fonction print
affichera le numéro comme indiqué ci-dessous.
pos:5331, neg:5331
Recommended Posts