tflearnのVocabularyProcessor使い方:中国語の語彙を確立し、テキストを語IDシーケンスに変換する

2152 ワード

-- coding: utf-8 --


from hanziconv import HanziConv from jieba import cut from tflearn.data_utils import VocabularyProcessor
DOCUMENTS=['これはテスト1','これはテスト2','これはテスト3','これは他のテスト',]
def chinese_tokenizer(documents):"中国語のテキストを語のシーケンスに変換する""
for document in documents:
    #  
    text = HanziConv.toSimplified(document)
    #  
    text = text.lower()
    #  
    yield list(cut(text))

シーケンス長を100に塗りつぶしたり切り取ったりして、語周波数<=2の語を削除します。


vocab = VocabularyProcessor(100, 2, tokenizer_fn=chinese_tokenizer)

語彙を作成します。作成後は変更できません。


vocab.fit(DOCUMENTS)

語彙の保存とロード


vocab.save('vocab.pickle') vocab = VocabularyProcessor.restore('vocab.pickle')

テキストはワードIDシーケンスに変換され、未知または埋め込み用のワードIDは0


id_documents = list(vocab.transform(DOCUMENTS)) for id_document in id_documents: print(id_document)

[2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]


[2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]


[2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]


[2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]


ワードIDシーケンスをテキストに変換


for document in vocab.reverse(id_documents): print(document)

これはテストです...


これはテストです...


これはテストです...


これはテストです...