質問: 1 and parts[0].startswith('名詞')): if parts[1] in ['代名詞','非自立','数','固有名詞']: continue #要素を追加 sels.append(cols[2]) print('\n%s:絞り込み結果↓\n' %doc) for sel in sels: print(sel) ``` selsに形態素が格納されない原因と解決策を教えていただきたいです。
回答: まず提示ソースで発生していたインデントエラーを修正しました。 おおまかな処理の流れとしては問題ありませんが、以下を見直す必要があります。 直接の原因は2です。 1. `flag`は利用前に初期化しましょう。 2. `if cols[2] == '「' or '『':` ではなく`if cols[2] == '「' or cols[2] == '『':`としてください。意図とは異なる判定文になっています。 3. `continue`は不要です。 ``` # 以下はタブ区切りの文字列とする chunks = """ 今日 キョウ 今日 名詞-副詞可能 の ノ の 助詞-連体化 天気 テンキ 天気 名詞-一般 は ハ は 助詞-係助詞 「 「 「 記号-括弧開 晴れ ハレ 晴れ 名詞-一般 」 」 」 記号-括弧閉 でし デシ です 助動詞 特殊・デス 連用形 た タ た 助動詞 特殊・タ 基本形 。 。 。 記号-句点 EOS """.splitlines() sels = [] #絞り込み #chunk:形態素解析結果(1行の文字列) flag = 0 # 1 for chunk in chunks: #水平タブ(\t)で区切り、文字列リストを作成 cols = chunk.split('\t') if len(cols) >= 4: #parts:品詞の種類 parts = cols[3].split('-') if cols[2] == '「' or cols[2] == '『': # 2 flag = 1 #continue # 3 elif cols[2] == '」' or cols[2] == '』': # 2 flag = 0 #continue # 3 elif (flag == 1 and parts[0].startswith('名詞')): if parts[1] in ['代名詞','非自立','数','固有名詞']: continue #要素を追加 sels.append(cols[2]) for sel in sels: print(sel) # 晴れ ```