[PYTHON] Un sort qui élimine les caractères et symboles non japonais et crée un corpus simple japonais

De nombreuses bibliothèques de langage naturel japonais arrêtent le traitement en raison d'une erreur au moment où vous appuyez sur l'hébreu ou le coréen. Voici quelques sorts utiles dans de tels cas.

Par exemple, janome présenté à PyCon 2015 mourra avec une erreur si le coréen est mélangé.

janome est un excellent analyseur morphologique qui vous évite d'avoir à installer MeCab, mais si même un caractère non japonais est mélangé, vous mourrez avec une erreur. Dans l'exemple de lecture de la barre de changement de langue gauche de wikipedia ...

Depuis le bar à gauche de wikipedia


text = "Version dans une autre langue Italiano 한 국어 Polski Simple English"
t = Tokenizer()
for token in t.tokenize(text):
     print token

---------------
Traceback (most recent call last):
  File "tests.py", line 98, in <module>
    for token in t.tokenize(text):
  File "lib/python2.7/site-packages/janome/tokenizer.py", line 107, in tokenize
    pos += lattice.forward()
  File "lib/python2.7/site-packages/janome/lattice.py", line 124, in forward
    while not self.enodes[self.p]:
IndexError: list index out of range

Dans un tel cas, ce sort

python


import re
import nltk

def filter(text):
   """
   :param text: str
   :rtype : str
   """
   #Éliminez les alphabets, les caractères alphanumériques demi-largeur, les symboles, les sauts de ligne et les tabulations
   text = re.sub(r'[a-zA-Z0-9¥"¥.¥,¥@]+', '', text)
   text = re.sub(r'[!"“#$%&()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]', '', text)
   text = re.sub(r'[\n|\r|\t]', '', text)

   #Éliminer les caractères non japonais(Coréen, chinois, hébreu, etc.)
   jp_chartype_tokenizer = nltk.RegexpTokenizer(u'([Ah-Hmm]+|[UNE-Hmm]+|[\u4e00-\u9FFF]+|[Ah-んUNE-Hmm\u4e00-\u9FFF]+)')
   text = "".join(jp_chartype_tokenizer.tokenize(text))
   return text


text = "Version dans une autre langue Italiano 한 국어 Polski Simple English"
text = filter(text)
t = Tokenizer()
for token in t.tokenize(text):
     print token


------------------
Autre préfixe,Connexion de nom,*,*,*,*,autre,Ta,Ta
Nomenclature des langues,Général,*,*,*,*,Langue,Gengo,Gengo
Nomenclature des versions,suffixe,Général,*,*,*,Édition,Van,Van

Recommended Posts

Un sort qui élimine les caractères et symboles non japonais et crée un corpus simple japonais
Créez une application Web qui convertit le PDF en texte à l'aide de Flask et PyPDF2
Comment créer une clé USB que l'installateur Linux et Win10 et winpe peuvent démarrer UEFI
J'ai créé un outil qui facilite un peu la création et l'installation d'une clé publique.
Procédure pour créer un Job qui extrait une image Docker et la teste avec des actions Github
Créez le code qui renvoie "A et prétendant B" en python
Comment écrire une classe méta qui prend en charge à la fois python2 et python3