En commençant par la psychologie, les humains ont analysé leurs émotions.
Parmi eux, en analyse négative / positive, principalement les remarques et les idées des gens Analysez si elle est positive (positive) ou rétrograde (négative).
L'analyse négative / positive peut être considérée comme un type de technique appelée «analyse des sentiments».
Cela extrait des expressions liées à l'évaluation et aux émotions contenues dans les phrases, etc. Il fait référence aux techniques d'analyse des émotions dans les phrases.
Les méthodes d'analyse négatives / positives incluent la classification mot par mot à l'aide d'un dictionnaire polaire et l'apprentissage en profondeur.
négatif/Les points positifs sont appelés "polarité"
Un dictionnaire de polarité est une collection de mots avec polarité.
Le dictionnaire polaire appelé PN Table ne polarisait pas manuellement un grand nombre de mots. Il est fait en attribuant des points de -1 à +1 à des mots très pertinents basés sur des mots avec une petite quantité d'informations de polarité.
En outre, il existe un «dictionnaire japonais de la polarité d'évaluation» publié sur la page du laboratoire Inui-Okazaki de l'université de Tohoku. C'est en le marquant comme neutre en plus de négatif et positif L'équilibre polaire des mots contenus dans le dictionnaire est équilibré.
Il existe également un "Dictionnaire des expressions polaires" créé par le laboratoire Yahoo! JAPAN.
#Sorties PNTable.
import pandas as pd
pn_df = pd.read_csv('./6020_negative_positive_data/data/pn_ja.dic',\
sep=':',
encoding='utf-8',
names=('Word','Reading','POS', 'PN')
)
print (pn_df)
L'analyse morphologique consiste à diviser une phrase en mots qui constituent la plus petite unité.
En effectuant une analyse morphologique, vous pouvez trouver le mot correspondant au dictionnaire de polarité. Cette fois, nous effectuerons une analyse morphologique à l'aide de MeCab et changerons le texte en une forme facile à lire.
import MeCab
mecab = MeCab.Tagger('')
title = open('./6020_negative_positive_data/data/aidokushono_insho.txt')
file = title.read()
title.close()
print(mecab.parse(file))
Tout d'abord, facilitez l'exécution d'autres traitements en listant les résultats de l'analyse.
Lors de l'analyse morphologique avec MeCab, la dernière ligne est «vierge» et l'avant-dernière ligne est «EOS». Puisque ces deux lignes ne sont pas utilisées, supprimez-les.
Dans chaque ligne du résultat de l'analyse, le mot est suivi d'une tabulation et les autres informations sont séparées par une virgule.
import MeCab
import pandas as pd
import re
mecab = MeCab.Tagger('')
title = open('./6020_negative_positive_data/data/aidokushono_insho.txt')
file = title.read()
title.close()
def get_diclist(file):
parsed = mecab.parse(file)
#Séparez le résultat de l'analyse par un saut de ligne
lines = parsed.split('\n')
#Créer une nouvelle liste avec les deux dernières lignes supprimées
lines = lines[0:-2]
#Créer une liste de résultats d'analyse
diclist = []
for word in lines:
#Créez des données séparées par des tabulations et des virgules
data = re.split('\t|,',word)
datalist = {'BaseForm':data[7]}
diclist.append(datalist)
return(diclist)
wordlist = get_diclist(file)
print(wordlist)
Lire le dictionnaire de polarité (table PN) Vous pouvez donner la polarité aux mots qui apparaissent en les comparant avec la liste des résultats d'analyse.
Créez un dictionnaire de mots et de valeurs de polarité uniquement à partir de PNTable. Crée une nouvelle liste de mots et de valeurs de polarité qui existent dans le nouveau PNTable.
import pandas as pd
#Lisez le dictionnaire
pn_df = pd.read_csv('./6020_negative_positive_data/data/pn_ja.dic',\
sep=':',
encoding='utf-8',
names=('Word','Reading','POS', 'PN')
)
#Changer PNTable en type dict avec uniquement des mots et des valeurs de polarité
word_list = list(pn_df['Word'])
pn_list = list(pn_df['PN'])
pn_dict = dict(zip(word_list, pn_list))
#Extraire les mots qui existent dans le tableau PN de la liste des résultats d'analyse
def add_pnvalue(diclist_old):
diclist_new = []
for word in diclist_old:
baseword = word['BaseForm']
if baseword in pn_dict:
#Ajouter la valeur de polarité et son mot s'il existe dans le PNTable
pn = float(pn_dict[baseword])
else:
#S'il n'existe pas, indiquez non trouvé
pn = 'notfound'
word['PN'] = pn
diclist_new.append(word)
return(diclist_new)
wordlist = get_diclist(file) #1.2.C'est la fonction utilisée dans 3.
pn_list = add_pnvalue(wordlist)
print(pn_list)
import re
import csv
import time
import pandas as pd
import matplotlib.pyplot as plt
import MeCab
import random
%matplotlib inline
#Lire le fichier
title = open('./6020_negative_positive_data/data/aidokushono_insho.txt')
file = title.read()
title.close()
#Créer une instance MeCab
mecab = MeCab.Tagger('')
#Lire le dictionnaire
pn_df = pd.read_csv('./6020_negative_positive_data/data/pn_ja.dic',\
sep=':',
encoding='utf-8',
names=('Word','Reading','POS', 'PN')
)
def get_diclist(file):
parsed = mecab.parse(file)
lines = parsed.split('\n')
lines = lines[0:-2]
diclist = []
for word in lines:
l = re.split('\t|,',word)
d = {'BaseForm':l[7]}
diclist.append(d)
return(diclist)
word_list = list(pn_df['Word'])
pn_list = list(pn_df['PN'])
pn_dict = dict(zip(word_list, pn_list))
def add_pnvalue(diclist_old):
diclist_new = []
for word in diclist_old:
base = word['BaseForm']
if base in pn_dict:
pn = float(pn_dict[base])
else:
pn = 'notfound'
word['PN'] = pn
diclist_new.append(word)
pn_point = []
for word in diclist_new:
pn = word['PN']
if pn != 'notfound':
pn_point.append(pn)
return(pn_point)
wordlist = get_diclist(file)
pn_list = add_pnvalue(wordlist)
plt.plot(pn_list)
plt.title(title)
plt.show