70568


表題の通り、MeCabを用いたPythonでの品詞抽出に取り組んでいます。

しかしながら `TypeError: in method 'Tagger_parse', argument 2 of type 'char const
*'` というエラーが出てしまいます。

環境は

  * Python 3.7
  * mecab-python-windows0.996.3

pycharmでのコーディングになります一身上の都合でネット環境がなく携帯からの質問になります故見にくいやもしれません。何ぞと至らぬ点がございますがご教授いただければ幸いです。

[code]

    import sys
    import MeCab
    m = MeCab.Tagger("-Ochasen")
    datafile = open("乱文編集前データ\ロイヤルカナン.txt", 'r', encoding='UTF-8')
    nouns = [
        sentence.split('')[0] for sentence in m.parse(datafile).splitlines
        if "名詞" in m.parse(datafile).split('')[4]
    ]
    print(nouns)
    datafile.close()
    
[/code]


CC BY-SA 4.0
2020-09-19T13:03:53.473
70538
2020-09-20T16:47:56.460
2020-09-20T16:47:56.460
27047
41971
question
python mecab
MeCabを用いたPythonの品詞抽出について


そのコードだと `datafile` に入っているのはファイルオブジェクトです．一方で，`MeCab.Tagger` の `parse()`
関数に渡すべきは文字列なのでエラーになります．

変数の命名からして「ファイルの中身をパースして，名詞のみを抜き出す」のが目的と思いますので，次のようにすればよいでしょう：

[code]

    import sys
    import MeCab
    
    m = MeCab.Tagger("-Ochasen")
    with open("test.txt", 'r', encoding='UTF-8') as f:
        s = f.read()
    
    parse_result = [l.split('\t') for l in m.parse(s).splitlines()][:-1]
    nouns = [w[0] for w in parse_result if w[3].startswith('名詞')]
    print(nouns)
    
    
[/code]


CC BY-SA 4.0
2020-09-20T15:42:54.250
70568
2020-09-20T15:42:54.250
27047
70538
answer