teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

1639閲覧

Sudachiで量が多いテキストデータを係り受け解析したい

yukoyuko

総合スコア3

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2024/02/12 10:58

編集2024/02/12 23:00

0

0

実現したいこと

Sudachiで係り受け解析をしたいです。

発生している問題・分からないこと

Exception: Tokenization error: Input is too long, it can't be more than 49149 bytes, was 123481
を解決できません。

該当のソースコード

Python

1import spacy 2 3nlp = spacy.load('ja_ginza') 4 5with open('pdf_j.txt','r',encoding='utf-8') as f: 6 text=f.read().strip() 7 8doc=nlp(text) 9for sent in doc.sents: 10 for token in sent: 11 print( 12 token.i, 13 token.lemma_, 14 token.tag_, 15 token.dep_, 16 token.head.i, 17 token.head.text, 18 token.rank 19 ) 20print('EOS')

Python

1import spacy 2 3nlp = spacy.load('ja_ginza') 4 5with open('pdf_j.txt','r',encoding='utf-8') as f: 6 text = f.read().strip() 7 8max_len = 4000 9segments = [] 10for i in range(0, len(text), max_len): 11 segment = text[i:i + max_len] 12 segments.append(segment) 13 14docs = [] 15for segment in segments: 16 doc = nlp(segment) 17 docs.append(doc) 18 19combined_doc = spacy.tokens.Doc(nlp.vocab) 20 21for sent in combined_doc.sents: 22 for token in sent: 23 print( 24 token.i, 25 token.lemma_, 26 token.tag_, 27 token.dep_, 28 token.head.i, 29 token.head.text, 30 token.rank 31 ) 32 33print('EOS')

Python

1import spacy 2 3nlp=spacy.load('ja_ginza') 4 5with open('pdf_j.txt','r',encoding='utf-8') as f: 6 text=f.read().strip() 7 8max_len=4000 9uni_seguments=[] 10 11segments=[] 12for i in range(0,len(text),max_len): 13 segment=text[i:i+max_len] 14 segments.append(segment) 15 16for segment in segments: 17 doc=nlp(segment) 18 uni_seguments.append(doc) 19 20all_doc=spacy.tokens.Doc.from_docs(uni_seguments) 21 22 23for sent in all_doc.sents: 24 for token in sent: 25 print(token.i, 26 token.lemma_, 27 token.tag_, 28 token.head.i, 29 token.head.text, 30 token.dep_ 31 ) 32print()

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

始めのコードでは
Exception: Tokenization error: Input is too long, it can't be more than 49149 bytes, was 123481
とエラーが出ました。

次のコードでは
EOS
のみ出力されました。

最後のコードではすべて出力されるのですが、
冒頭にUserWarning: [W102] Skipping unsupported user data 'sub_tokens:
が出力されます。
加えて、どのコードでも
"tokens" はモジュール "spacy" の既知のメンバーではありません
というメッセージが出ます。

補足

環境は
VSCode
Python 3.10.12
spacyのVersion 3.2.0
ginza-5.1.3 ja_ginza-5.1.3
です。
参照したコードは
https://zenn.dev/hyga2c/articles/ginza5_largetext
です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

最後のコードの冒頭に2行追加してUserWarningは出なくなりました。
「"tokens" はモジュール "spacy" の既知のメンバーではありません」というメッセージは変わらずあり、
イメージ説明
「reportAttributeAccessIssue [ブール値または文字列、オプション]: 属性アクセスに関連する診断を生成または抑制します。この設定のデフォルト値は です。"error"」
への対処法は不明なままですが、その後の処理で特にエラーが出なかったので、とりあえず今回はこれで良しとすることにしました。

pythonコード

1import warnings#追加 2warnings.filterwarnings('ignore',category=UserWarning)#追加 3 4import spacy 5nlp=spacy.load('ja_ginza') 6 7with open('pdf_j.txt','r',encoding='utf-8') as f: 8 text=f.read().strip() 9 10max_len=4000 11uni_seguments=[] 12 13segments=[] 14for i in range(0,len(text),max_len): 15 segment=text[i:i+max_len] 16 segments.append(segment) 17 18for segment in segments: 19 doc=nlp(segment) 20 uni_seguments.append(doc) 21 22all_doc=spacy.tokens.Doc.from_docs(uni_seguments) 23 24 25for sent in all_doc.sents: 26 for token in sent: 27 print(token.i, 28 token.lemma_, 29 token.tag_, 30 token.head.i, 31 token.head.text, 32 token.dep_ 33 ) 34 35print()

投稿2024/02/15 09:57

yukoyuko

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問