rhoknp.units.sentence module

class rhoknp.units.sentence.Sentence(text: str | None = None)[source]

Bases: Unit

文クラス.

Parameters:

text – 文の文字列.

EOS = 'EOS'
SID_PAT = re.compile('^(?P<sid>(?P<did>[a-zA-Z\\d\\-_]*?)-?\\d*)$')
SID_PAT_KWDLC = re.compile('^(?P<sid>(?P<did>w\\d{6}-\\d{10})(-\\d+){1,2})$')
SID_PAT_WAC = re.compile('^(?P<sid>(?P<did>wiki\\d{8})(-\\d{2})(-\\d{2})?)$')
index

文書全体におけるインデックス.

property global_index: int

文書全体におけるインデックス.

property did: str

文書 ID(doc_id のエイリアス).

property sid: str

文 ID(sent_id のエイリアス).

property document: Document

文書.

Raises:

AttributeError – 解析結果にアクセスできない場合.

property clauses: list[Clause]

節のリスト.

Raises:

AttributeError – 解析結果にアクセスできない場合.

property phrases: list[Phrase]

文節のリスト.

Raises:

AttributeError – 解析結果にアクセスできない場合.

property base_phrases: list[BasePhrase]

基本句のリスト.

Raises:

AttributeError – 解析結果にアクセスできない場合.

property morphemes: list[Morpheme]

形態素のリスト.

Raises:

AttributeError – 解析結果にアクセスできない場合.

property comment: str

コメント行.

property pas_list: list[Pas]

述語項構造のリスト.

Raises:

AttributeError – 解析結果にアクセスできない場合.

classmethod from_raw_text(text: str, post_init: bool = True) Sentence[source]

文クラスのインスタンスを文の文字列から初期化.

Parameters:
  • text – 文の文字列.

  • post_init – インスタンス作成後の追加処理を行うなら True.

Example

>>> from rhoknp import Sentence
>>> text = "天気が良かったので散歩した。"
>>> sent = Sentence(text)
classmethod from_jumanpp(jumanpp_text: str, post_init: bool = True) Sentence[source]

文クラスのインスタンスを Juman++ の解析結果から初期化.

Parameters:
  • jumanpp_text – Juman++ の解析結果.

  • post_init – インスタンス作成後の追加処理を行うなら True.

Raises:

ValueError – 解析結果読み込み中にエラーが発生した場合.

Example

>>> from rhoknp import Sentence
>>> jumanpp_text = """
... # S-ID:1
... 天気 てんき 天気 名詞 6 普通名詞 1 * 0 * 0 "代表表記:天気/てんき カテゴリ:抽象物"
... が が が 助詞 9 格助詞 1 * 0 * 0 NIL
... 良かった よかった 良い 形容詞 3 * 0 イ形容詞アウオ段 18 タ形 8 "代表表記:良い/よい 反義:形容詞:悪い/わるい"
... ので ので のだ 助動詞 5 * 0 ナ形容詞 21 ダ列タ系連用テ形 12 NIL
... 散歩 さんぽ 散歩 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:散歩/さんぽ ドメイン:レクリエーション カテゴリ:抽象物"
... した した する 動詞 2 * 0 サ変動詞 16 タ形 10 "代表表記:する/する 自他動詞:自:成る/なる 付属動詞候補(基本)"
... 。 。 。 特殊 1 句点 1 * 0 * 0 NIL
... EOS
... """
>>> sent = Sentence.from_jumanpp(jumanpp_text)
classmethod from_knp(knp_text: str, post_init: bool = True) Sentence[source]

文クラスのインスタンスを KNP の解析結果から初期化.

Parameters:
  • knp_text – KNP の解析結果.

  • post_init – インスタンス作成後の追加処理を行うなら True.

Raises:

ValueError – 解析結果読み込み中にエラーが発生した場合.

Example

>>> from rhoknp import Sentence
>>> knp_text = """
... # S-ID:1
... * 1D
... + 1D
... 天気 てんき 天気 名詞 6 普通名詞 1 * 0 * 0 "代表表記:天気/てんき カテゴリ:抽象物"
... が が が 助詞 9 格助詞 1 * 0 * 0 NIL
... * 2D
... + 2D <節-区切><節-主辞>
... 良かった よかった 良い 形容詞 3 * 0 イ形容詞アウオ段 18 タ形 8 "代表表記:良い/よい 反義:形容詞:悪い/わるい"
... ので ので のだ 助動詞 5 * 0 ナ形容詞 21 ダ列タ系連用テ形 12 NIL
... * -1D
... + -1D <節-区切><節-主辞>
... 散歩 さんぽ 散歩 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:散歩/さんぽ ドメイン:レクリエーション カテゴリ:抽象物"
... した した する 動詞 2 * 0 サ変動詞 16 タ形 10 "代表表記:する/する 自他動詞:自:成る/なる 付属動詞候補(基本)"
... 。 。 。 特殊 1 句点 1 * 0 * 0 NIL
... EOS
... """
>>> sent = Sentence.from_knp(knp_text)
has_document() bool[source]

文書が設定されていたら True.

is_jumanpp_required() bool[source]

Juman++ による形態素解析がまだなら True.

is_knp_required() bool[source]

KNP による構文解析がまだなら True.

is_clause_tag_required() bool[source]

KNP による節-主辞・節-区切のタグ付与がまだなら True.

to_raw_text() str[source]

生テキストフォーマットに変換.

to_jumanpp() str[source]

Juman++ フォーマットに変換.

Raises:

AttributeError – 解析結果にアクセスできない場合.

to_knp() str[source]

KNP フォーマットに変換.

Raises:

AttributeError – 解析結果にアクセスできない場合.

reparse() Sentence[source]

文を再構築.

Note

解析結果に対する編集を有効にする際に実行する必要がある.