以下のコードで形態素解析することができました。
python
1 def to_nodes(self, strings: str) -> List[MeCab.Node]: 2 node = self.mecab.parseToNode(strings) 3 nodes = [] 4 while node: 5 if node.feature.split(',')[0] != 'BOS/EOS': 6 nodes.append(node) 7 node = node.next 8 LOGGER.debug([n.surface for n in nodes]) 9 return nodes
しかし、ときどき辞書の関係で単語が分割されてしまいます。
それは別に構わないのですが、分割されてしまった単語は結果に含めないようにしたいです。
そこで、以下のコードを書きました。
pyhon
1 def wordlist_to_nodes(self, wordlist: List[str]) -> List[MeCab.Node]: 2 nodes_by_element = [self.to_nodes(word) for word in wordlist] 3 # 分割されなかったものに限定する 4 nodes = [nodes[0] for nodes in nodes_by_element if len(nodes) == 1] 5 LOGGER.debug([n.surface for n in nodes]) 6 return nodes
すると、2つのコードにあるloggingの表示が(分割されなかったものに限定したものとは別に)全くの別物が出力されてしまいます。
1つ目のloggingは正しい結果なんですが、2つ目のloggingは期待通りになりません。
何が問題なのでしょうか?解決策、もしくはご自身の環境でどのように出力されるのか教えてください。
なお、2つは1つのクラスのメソッドであり、その変数にmecab本体があります。
環境は以下の通りです。
- macOS
- mecab-python3 ver0.7
- homebrewによりインストールしたMeCabを使用
> ご自身の環境でどのように出力されるのか教えてください。
簡単な入力例と、現状の出力、理想の出力例を記載ください。
また、できればコードの一部分ではなく単体で動作する完全なコードを提示ください。
回答1件
あなたの回答
tips
プレビュー