Vous devez installer MeCab en premier lieu.
Mais je pense que les artisans du prétraitement sont déjà prêts, je vais donc l'omettre.
Il prend également en charge l'appel du dictionnaire Mecab-neologd, c'est donc une bonne idée de l'installer.
Faites git clone [email protected]: Kensuke-Mitsuzawa / JapaneseTokenizers.git
et vous pouvez l'utiliser avec python setup.py install
.
Ou vous pouvez le faire avec pip install git + https: // github.com / Kensuke-Mitsuzawa / JapaneseTokenizers
.
Le même contenu est écrit dans exemple, je vais donc l'écrire brièvement.
Préparez l'instruction d'entrée
`phrase = u'Teheran (persan: تهران; Tehrān Tehran.ogg prononciation [help / file] / teɦˈrɔːn /, anglais: Téhéran) est la capitale de l'Asie occidentale, l'Iran et la capitale de Téhéran. Population 12 223 598 habitants. La population urbaine atteint 13 413 348 habitants. ''
python2x n'a qu'une entrée ʻunicode`.
Peu importe celui que vous utilisez pour python3x.
Spécifie le type d'os.
Autre que centOS
, ʻos Type =" generic "convient. Seul centOS doit avoir ʻos Type = "centsos"
.
(C'est parce que les commandes système de Mecab ne sont différentes que pour centOS. Il peut y avoir d'autres systèmes d'exploitation comme ça ... J'ai confirmé que cela fonctionne sur Ubuntu et Mac.)
Spécifie le type de dictionnaire.
dictType =" "
ou dictType =" ipadic "
dictType =" neologd "
Initialiser l'instance
mecab_wrapper = MecabWrapper(dictType=dictType, osType=osType)
Mots divisés.
tokenized_obj = mecab_wrapper.tokenize(sentence=sentence)
Par défaut, les mots et les parties sont renvoyés dans une paire de tapple.
tokenized_obj = mecab_wrapper.tokenize(sentence=sentence, return_list=False)
Ensuite, cet objet de classe est renvoyé, donc si vous souhaitez l'utiliser pour d'autres traitements, ce Il est préférable de spécifier le drapeau.
Filtration
Le mot d'arrêt est
stopwords = [u'Teheran ']
Mettez une chaîne dans la liste comme ceci. («Str» et «unicode» sont tous deux acceptables)
Pour spécifier par partie, spécifiez comme [(partie du tuple de partie)]
.
Les mots de partie peuvent être spécifiés jusqu'à 3 niveaux. Par exemple, dans IPADIC part-of-speech system, si vous voulez nom-nomenclature propriétaire-nom personnel
,` (u'noun ', Écrivez u'nomenclature propriétaire ', u'nom personnel') '.
Si vous voulez spécifier jusqu'à nom-propriétaire
, utilisez (u'noun ', u'proprietary nom)
.
Encore une fois, vous pouvez saisir à la fois «str» et «unicode».
Placez la bande de paroles de partie que vous souhaitez acquérir dans la liste.
pos_condition = [(u'noun ', u'proprietary nom'), (u'verb ', u'independence')]
Effectuez un filtrage.
filtered_obj = mecab_wrapper.filter(
parsed_sentence=tokenized_obj,
pos_condition=pos_condition
)
La valeur de retour est cet objet de classe
Pour résumer brièvement
C'est une motivation.
Je suis un pré-traitement du traitement du langage naturel depuis longtemps ... Je suis un saint qui fait du prétraitement jour après jour, et parfois même du prétraitement des recherches d'autres personnes. .. .. ..
Cependant, à un moment donné, j'ai soudainement remarqué __ "La partie de la division morphologique n'écrit-elle pas le même processus à chaque fois?" __
Donc, tout en faisant la même chose encore et encore, je n'ai empaqueté que les processus que j'ai utilisés (et utiliserai probablement) le plus souvent.
Un paquet qui peut faire quelque chose de similaire en Python est natto.
Cependant, je ne me sentais pas pratique car je devais écrire le processus de filtrage en natto et je ne pouvais pas ajouter le dictionnaire, alors j'en ai créé un nouveau.
Que vous soyez un artisan du prétraitement ou un artisan du prétraitement actif! J'espère que vous pourrez réduire votre travail autant que possible et profiter de la PNL.
Recommended Posts