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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

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

Q&A

解決済

1回答

2146閲覧

GiNZA / spaCy (python) 自然言語処理 日本語形態素解析でのMiscデータの取得

groggy_egg

総合スコア24

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

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

0グッド

0クリップ

投稿2020/02/10 03:24

GiNZA/spaCyのコンソール出力結果のMiscの
取得方法とデータの意味を教えてほしいです

参考サイトの3.にコンソールでの実行結果があるのですが、
https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part4.html

BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I
という項目だけspaCyから取得できません

上記の項目はCoNLL-Uフォーマットの解説ページ↓では、
https://universaldependencies.org/format.html#syntactic-annotation

MISC,Featureなどと呼ばれているようなのですが
spaCyでtoken.miscやtoken.featureで取得しようとしてもエラーになります
(そもそも、どういう名前で取得できるのかも見つかりませんでした)

各項目の意味も
BunsetuBILabelとNP_I
はIOBタグ関連で
BunsetuPositionType
に関しては述語とか名詞句関連だと思うのですが
確証となるソースが得られず困っています

公式ページ含めいろいろな解説ページを調べたのですが
そもそもMiscデータを取得しているところがありませんでした

何かアドバイスや参考サイトなどご教示願います

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

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

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

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

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

guest

回答1

0

ベストアンサー

ginzaコマンドのソース見る方が早そうです。

https://github.com/megagonlabs/ginza/blob/v3.1.1/ginza/command_line.py#L200
https://github.com/megagonlabs/ginza/blob/v3.1.1/ginza/command_line.py#L215


https://github.com/megagonlabs/ginza/blob/v3.1.1/ginza/command_line.py#L12
おそらくは、_属性がタガーなどが自身で使う情報を入れておけるもののようですね。

"spacy _ attribute" あたりで検索すると
https://spacy.io/usage/linguistic-featuresがヒットしました。
_でページ内をワード検索すると
https://spacy.io/usage/linguistic-features#retokenization-extensions

の項目があります。

If you’ve registered custom extension attributes, you can overwrite them during tokenization by providing a dictionary of attribute names mapped to new values as the "_" key in the attrs. For merging, you need to provide one dictionary of attributes for the resulting merged token. For splitting, you need to provide a list of dictionaries with custom attributes, one per split subtoken.


conllu_token_line関数がginzaコマンドにおける結果の組み立てをしているので、それを参考にするといいかと思います。

python

1import spacy 2nlp = spacy.load('ja_ginza') 3 4doc = nlp('spaCyはオープンソースの自然言語処理ライブラリです。') 5attr = doc[0]._ 6print(attr.bunsetu_bi_label, attr.bunsetu_position_type)

plain

1B SEM_HEAD

投稿2020/02/10 05:09

quickquip

総合スコア11235

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

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

groggy_egg

2020/02/10 05:25

ありがとうございます token._.bunsetu_bi_label token._.bunsetu_position_type で取得できました 提示していただいたコードをもっと読んでみます
groggy_egg

2020/02/12 01:00

あの後コードを読んでみたのですが BunsetuPositionType関連の情報はまだ見つけられませんでした ですが、情報の探し方も参考になりましたし データの取得法もわかり作業も進めることが出来ました 返信が遅れてしまいましたが ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問