前提・実現したいこと
pythonで自動要約プログラムを作ろうと思っています。
https://software-data-mining.com/python%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E6%8A%80%E6%B3%95%E3%82%92%E3%81%B5%E3%82%93%E3%81%A0%E3%82%93%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F/
こちらのサイトのプログラムを参考に要約プログラムの方を書きましたが、"Tokenize"の部分でエラーが吐かれます。
どうすれば改善されるでしょうか。
お力添えいただきたいです。
該当のコード
python
1from janome.analyzer import Analyzer 2from janome.charfilter import UnicodeNormalizeCharFilter, RegexReplaceCharFilter 3from janome.tokenizer import Tokenizer as JanomeTokenizer # sumyのTokenizerと名前が被るため 4from janome.tokenfilter import POSKeepFilter, ExtractAttributeFilter 5from janome.tokenizer import Tokenizer 6from janome.analyzer import Analyzer 7from janome.charfilter import * 8from janome.tokenfilter import * 9import re 10from sumy.parsers.plaintext import PlaintextParser 11from sumy.nlp.tokenizers import Tokenizer 12from sumy.summarizers.lex_rank import LexRankSummarizer 13 14def fn_start_document_summarize(): 15 file=(r"C:\Users\名前\PycharmProjects\aiueo\ extract-sample.txt") 16 with open(file,encoding='utf-8') as f: 17 contents = f.readlines() 18 19 contents = ''.join(contents) 20 21 text = re.findall("[^。]+。?", contents.replace('\n', '')) 22 23 print(text) 24 tokenizer = Tokenizer('japanese') 25 char_filters=[UnicodeNormalizeCharFilter(), RegexReplaceCharFilter(r'[()「」、。]', ' ')] 26 token_filters=[POSKeepFilter(['名詞', '形容詞', '副詞', '動詞']), ExtractAttributeFilter('base_form')] 27 # 形態素解析(単語単位に分割する) 28 analyzer = Analyzer( 29 char_filters=char_filters, 30 tokenizer=tokenizer, 31 token_filters=token_filters 32 ) 33 34 corpus = [' '.join(analyzer.analyze(sentence)) + u'。' for sentence in text] 35 print(corpus) 36 print(len(corpus)) 37 38 # 文書要約処理実行 39 # from sumy.parsers.plaintext import PlaintextParser 40 # from sumy.nlp.tokenizers import Tokenizer 41 # from sumy.summarizers.lex_rank import LexRankSummarizer 42 43 parser = PlaintextParser.from_string(''.join(corpus), Tokenizer('japanese')) 44 45 # LexRankで要約を原文書の3割程度抽出 46 summarizer = LexRankSummarizer() 47 summarizer.stop_words = [' '] 48 49 # 文書の重要なポイントは2割から3割といわれている?ので、それを参考にsentences_countを設定する。 50 summary = summarizer(document=parser.document, sentences_count=int(len(corpus) / 10 * 3)) 51 52 print(u'文書要約結果') 53 for sentence in summary: 54 print(text[corpus.index(sentence.__str__())]) 55 56 57if __name__ == '__main__': 58 fn_start_document_summarize()
エラー
Traceback (most recent call last): File "C:/Users/名前/PycharmProjects/youyaku/bunshoyouyaku.py", line 58, in <module> fn_start_document_summarize() File "C:/Users/名前/PycharmProjects/youyaku/bunshoyouyaku.py", line 28, in fn_start_document_summarize analyzer = Analyzer( File "C:\Users\名前\AppData\Local\Programs\Python\Python38\lib\site-packages\janome\analyzer.py", line 91, in __init__ elif tokenizer.wakati: AttributeError: 'Tokenizer' object has no attribute 'wakati'
補足(FW/ツールのバージョンなど)
pycharmを利用しています。
Python 3.8.5
OS:windows10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 10:48