Ich werde es als Notiz aufschreiben, damit Leute, die über denselben Fehler stolpern, weniger Zeit haben, nachzuschlagen.
Folgendes wird in Google Colab ausgeführt.
Installieren Sie MeCab- und Huggingface-Transformatoren auf Colab unter hier.
!apt install aptitude swig
!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y
!pip install mecab-python3
!pip install transformers
Versuchen Sie, mit dem Tokenizer von BERT für Japanisch zu schreiben.
from transformers.tokenization_bert_japanese import BertJapaneseTokenizer
#Deklarierter Tokenizer für japanisches BERT
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
text = "Die Verarbeitung natürlicher Sprache macht viel Spaß."
wakati_ids = tokenizer.encode(text, return_tensors='pt')
print(tokenizer.convert_ids_to_tokens(wakati_ids[0].tolist()))
print(wakati_ids)
Ich habe den folgenden Fehler erhalten.
----------------------------------------------------------
Failed initializing MeCab. Please see the README for possible solutions:
https://github.com/SamuraiT/mecab-python3#common-issues
If you are still having trouble, please file an issue here, and include the
ERROR DETAILS below:
https://github.com/SamuraiT/mecab-python3/issues
Sie müssen die Ausgabe nicht auf Englisch schreiben.
------------------- ERROR DETAILS ------------------------
arguments:
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-3-f828f6470517> in <module>()
2
3 #Deklarierter Tokenizer für japanisches BERT
----> 4 tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
5
6 text = "Die Verarbeitung natürlicher Sprache macht viel Spaß."
4 frames
/usr/local/lib/python3.6/dist-packages/MeCab/__init__.py in __init__(self, rawargs)
122
123 try:
--> 124 super(Tagger, self).__init__(args)
125 except RuntimeError:
126 error_info(rawargs)
RuntimeError:
Die Fehlerausgabe fordert mich freundlicherweise auf, hier zu lesen. Installieren Sie also mecab-python3 wie unter der URL angegeben. Wenn Sie das tun
pip install unidic-lite
Wenn Sie auch ausführen, wird es nicht durch Initialisieren von MeCab gelöscht. Diesmal wurde ich jedoch wütend, weil "encode" "Value Error: zu viele Werte zum Entpacken (erwartete 2)" sagte.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-f828f6470517> in <module>()
6 text = "Die Verarbeitung natürlicher Sprache macht viel Spaß."
7
----> 8 wakati_ids = tokenizer.encode(text, return_tensors='pt')
9 print(tokenizer.convert_ids_to_tokens(wakati_ids[0].tolist()))
10 print(wakati_ids)
8 frames
/usr/local/lib/python3.6/dist-packages/transformers/tokenization_bert_japanese.py in tokenize(self, text, never_split, **kwargs)
205 break
206
--> 207 token, _ = line.split("\t")
208 token_start = text.index(token, cursor)
209 token_end = token_start + len(token)
ValueError: too many values to unpack (expected 2)
Über diesen Fehler hier, der Entwickler von mecab-python3? Wie bereits erwähnt, wurde es gelöst, indem die Version von mecab-python3 als "0.996.5" angegeben wurde.
Zusammenfassend denke ich, dass es bei der Installation von pip kein Fehler ist, wenn Sie es wie folgt deklarieren.
!apt install aptitude swig
!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y
!pip install mecab-python3==0.996.5
!pip install unidic-lite
!pip install transformers
Wenn Sie vor dem Ausführen von ↑ bereits die neueste Version von mecab-python3 mit pip installiert haben, vergessen Sie nicht, Ihre Colab-Sitzung erneut zu verbinden. Sie können die Sitzung von der Sitzungsverwaltung trennen, indem Sie oben rechts im Colab-Bildschirm auf ▼ klicken, z. B. RAM oder Festplatte.
from transformers.tokenization_bert_japanese import BertJapaneseTokenizer
#Deklarierter Tokenizer für japanisches BERT
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
text = "Die Verarbeitung natürlicher Sprache macht viel Spaß."
wakati_ids = tokenizer.encode(text, return_tensors='pt')
print(tokenizer.convert_ids_to_tokens(wakati_ids[0].tolist()))
print(wakati_ids)
#Downloading: 100%
#258k/258k [00:00<00:00, 1.58MB/s]
#
#['[CLS]', 'Natur', 'Sprache', 'wird bearbeitet', 'Ist', 'sehr viel', 'angenehm', '。', '[SEP]']
#tensor([[ 2, 1757, 1882, 2762, 9, 8567, 19835, 8, 3]])
Ich konnte es sicher mit "BertJapanese Tokenizer" schreiben.
Ende
Recommended Posts