Wenn ich versuche, einen japanischen Satz aus PyKNP mit Human ++ morphologisch zu zerlegen, erhalte ich diesen Fehler ...!
ValueError: invalid literal for int() with base 10: 'input'
(Die Methode zur Verwendung von Human und Juman ++ aus Python wird weggelassen.)
File "/$HOME/.pyenv/versions/anaconda3-2019.03/lib/python3.6/site-packages/pyknp/
juman/morpheme.py", line 143, in _parse_spec
self.hinsi_id = int(parts[4])
ValueError: invalid literal for int() with base 10: 'input'
Zur Zeit, wenn ich es anhand der Fehlermeldung nachschlage
Es scheint, dass Leerzeichen mit halber Breite und Zeichen mit halber Breite schlecht sind.
Ersetzen Sie also alle Zeichen mit halber Breite durch Zeichen mit voller Breite.
Selbst wenn ich alle Zeichen mit halber Breite zu Zeichen mit voller Breite korrigierte, trat derselbe Fehler weiterhin auf. Anscheinend unterscheidet sich die Ursache von der Situation im obigen Artikel.
Also habe ich es auf pdb ausgeführt und den Inhalt der Variablen parts
zum Zeitpunkt des Fehlers überprüft ~~ Mach es von Anfang an ~~.
(Pdb) parts
['InvalidParameter:', 'byte', 'size', 'of', 'input', 'string', '(4302)', 'is', 'greater', 'than│(base)
', 'maximum', 'allowed', '(4096)']
(Es war ursprünglich eine Spezifikation, dass der Fehlerinhalt in der Liste enthalten ist, die das Analyseergebnis enthält, wenn ein Fehler auftritt ...)
Anscheinend war ** die Größe (Anzahl der Bytes) der Eingabezeichenfolge zu groß **. ** Die Grenze der Eingabezeichenfolge scheint insgesamt 4096 Byte zu betragen **, daher ist es besser, die Kapazität auf weniger als diese zu beschränken.
Ich war gerade dabei, einen Datensatz zu erstellen, der an BERT gesendet werden soll, aber ein zu langer Satz ist ein Pass! ~~ UTF-8 scheint je nach Zeichentyp eine unterschiedliche Anzahl von Bytes zu haben, daher ist es schwierig, ~~ zu schneiden
Erkennen Sie Anweisungen, die größer als 4096 Byte sind, unter den folgenden Bedingungen und umgehen Sie sie. (Split oder Pass) Es untersucht und vergleicht die Anzahl der Bytes in der Zeichenfolge "Text".
if len(text.encode('utf-8')) > 4096:
Klicken Sie hier, um die Anzahl der Bytes anstelle der Länge der Zeichen in einer Zeichenfolge zu überprüfen
Die Fehlerursache bei Verwendung von Human ++ aus PyKNP wird mit dem oben eingeführten Artikel kombiniert.
war.
Recommended Posts