[PYTHON] Ein Zauber, der nicht japanische Zeichen und Symbole eliminiert und einen einfachen japanischen Korpus erzeugt

Es gibt viele japanische Bibliotheken in natürlicher Sprache, die die Verarbeitung aufgrund eines Fehlers stoppen, sobald Sie Hebräisch oder Koreanisch drücken. Hier sind einige nützliche Zaubersprüche in solchen Fällen.

Zum Beispiel stirbt Janome, der auf der PyCon 2015 vorgestellt wurde, mit einem Fehler, wenn Koreanisch eingemischt wird.

janome ist ein großartiger morphologischer Analysator, der Ihnen die Installation von MeCab erspart. Wenn jedoch auch nur ein nicht japanisches Zeichen eingemischt wird, sterben Sie mit einem Fehler. Im Beispiel des Lesens der linken Sprachschaltleiste von Wikipedia ...

Aus der Leiste links von Wikipedia


text = "Andere Sprachversion Italiano 한 국어 Polski Einfaches Englisch"
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

In einem solchen Fall dieser Zauber

python


import re
import nltk

def filter(text):
   """
   :param text: str
   :rtype : str
   """
   #Beseitigen Sie Alphabete, alphanumerische Zeichen halber Breite, Symbole, Zeilenumbrüche und Tabulatoren
   text = re.sub(r'[a-zA-Z0-9¥"¥.¥,¥@]+', '', text)
   text = re.sub(r'[!"“#$%&()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]', '', text)
   text = re.sub(r'[\n|\r|\t]', '', text)

   #Beseitigen Sie nicht japanische Zeichen(Koreanisch, Chinesisch, Hebräisch usw.)
   jp_chartype_tokenizer = nltk.RegexpTokenizer(u'([Ah-Hmm]+|[EIN-Hmm]+|[\u4e00-\u9FFF]+|[Ah-んEIN-Hmm\u4e00-\u9FFF]+)')
   text = "".join(jp_chartype_tokenizer.tokenize(text))
   return text


text = "Andere Sprachversion Italiano 한 국어 Polski Einfaches Englisch"
text = filter(text)
t = Tokenizer()
for token in t.tokenize(text):
     print token


------------------
Anderes Präfix,Nomenverbindung,*,*,*,*,andere,Ta,Ta
Sprachnomenklatur,Allgemeines,*,*,*,*,Sprache,Gengo,Gengo
Versionsnomenklatur,Suffix,Allgemeines,*,*,*,Auflage,Van,Van

Recommended Posts

Ein Zauber, der nicht japanische Zeichen und Symbole eliminiert und einen einfachen japanischen Korpus erzeugt
Erstellen Sie eine Web-App, die PDF mit Flask und PyPDF2 in Text konvertiert
So erstellen Sie einen USB-Stick, mit dem Linux- und Win10-Installer und Winpe UEFI starten können
Ich habe ein Tool erstellt, mit dem das Erstellen und Installieren eines öffentlichen Schlüssels etwas einfacher ist.
Schritte zum Erstellen eines Jobs, der ein Docker-Image abruft und mit Github-Aktionen testet
Erstellen Sie den Code, der in Python "A und vorgeben B" ausgibt
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt