表題の件で質問させてください
テキストデータを読み込んで形態素解析をしたのですが
01st
02st
03st
というような言葉があった場合
01
st
02
st
03
st
のように数字と英語で区切られてしまいます
そこで簡略辞書を用いて「01st」という言葉として認識させようとしています
この辞書を読み込ませると
#作成した辞書使う場合 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-13-13ce50d97c07> in <module>() 53 #t = Tokenizer() 54 #作成した辞書使う場合 ---> 55 t = Tokenizer(r'C:\Users\Desktop\100.csv', udic_type='simpledic', udic_enc="utf8") 56 57 ret = [] ~\AppData\Local\Continuum\anaconda3\lib\site-packages\janome\tokenizer.py in __init__(self, udic, udic_enc, udic_type, max_unknown_length, wakati, mmap) 166 if udic.endswith('.csv'): 167 # build user dictionary from CSV --> 168 self.user_dic = UserDictionary(udic, udic_enc, udic_type, connections) 169 elif os.path.isdir(udic): 170 # load compiled user dictionary ~\AppData\Local\Continuum\anaconda3\lib\site-packages\janome\dic.py in __init__(self, user_dict, enc, type, connections) 372 """ 373 build_method = getattr(self, 'build' + type) --> 374 compiledFST, entries = build_method(user_dict, enc) 375 Dictionary.__init__(self, [compiledFST], entries, connections) 376 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\janome\dic.py in buildsimpledic(self, user_dict, enc) 402 for line in f: 403 line = line.rstrip() --> 404 surface, pos_major, reading = line.split(',') 405 part_of_speech = ','.join([pos_major, u'*', u'*', u'*']) 406 morph_id = len(surfaces) ValueError: not enough values to unpack (expected 3, got 1)
というエラーが発生しどこが原因か分からず悩んでいます
以下コードです
python
1import pandas as pd 2from janome.tokenizer import Tokenizer 3from janome.analyzer import Analyzer 4from janome.tokenfilter import POSStopFilter 5from collections import Counter 6from gensim.models import word2vec 7import logging 8import nltk 9import re 10from nltk.collocations import * 11 12#from IPython.core.debugger import Pdb; Pdb().set_trace() 13#データフレーム作成-------------------------------------------------------------------------------- 14 15#ファイル指定 16input_file_name = (r'C:\Users\Desktop\Book11.xlsm') 17 18#ファイル読み込み 19input_book = pd.ExcelFile(input_file_name) 20 21#シート名取得(sheet_namesメソッドでExcelブック内の各シートの名前をリスト型で取得) 22input_sheet_name = input_book.sheet_names 23 24#シート総数取得 25num_sheet = len(input_sheet_name) 26 27#シート総数表示 28print('シートの数:', num_sheet) 29#シート名表示 30print('シートの名前:',input_sheet_name) 31#type確認 32print('type :',type(input_book)) 33 34#DataFrameとして2枚目(標準トラブルシート)のsheetを読み込み 35#skiprows = 5 : 先頭5行読み飛ばす 36#skip_footer = 1 : 最後1行読み飛ばす 37#usecols = 'Z,AD:AF' : Z列、AD,AE,AF列を読み込む 38#names = range(0,4) : 列名に0~4を付与 39input_sheet_df = input_book.parse(input_sheet_name[1], 40 skiprows = 5, 41 skip_footer = 1, 42 usecols = 'Z,AD:AF', 43 names = range(0,4)) 44 45#列名変更 46input_sheet_df = input_sheet_df.rename(columns={0:'異常発生個所',1:'異常名称',2:'現象',3:'原因'}) 47print('type :',type(input_sheet_df)) 48 49 50#形態素解析--------------------------------------------------------------------------------------- 51 52# Tokenizerのインスタンス生成 53#t = Tokenizer() 54#作成した辞書使う場合 55t = Tokenizer(r'C:\Users\Desktop\100.csv', udic_type='simpledic', udic_enc="utf8") 56 57ret = [] 58 59 60docking = input_sheet_df.values.tolist() 61 62#print(type(docking)) 63 64 65for wordlist in docking: 66 #print(wordlist) 67 tokens = t.tokenize(str(wordlist)) 68 for token in tokens: 69 if token.part_of_speech.split(',')[0] in ['名詞']: 70 if not token.part_of_speech.split(',')[1] in ['サ変接続']: 71 ret.append(token.base_form) 72print(ret) 73 74 75 76 77
また、簡略辞書を使う為にはjanomeのバージョンが0.2.7以上である必要があるのですが0.3.6を使用しているので問題ないかと思います
初歩的な内容かと思いますがアドバイス宜しくお願い致します
回答1件
あなたの回答
tips
プレビュー