Beispiel #1
0
    def _setPAS(self, newstyle):
        """ 各基本句にPASを設定 """
        tag_list = self.tag_list()
        if (newstyle):
            for pinfo in self._pinfos:
                pinfo = json.loads(pinfo)

                tag_idx = pinfo.get("tid")
                if tag_idx is None:
                    end = pinfo["head_token_end"]
                    tag_idx = bisect.bisect(self.tag_positions, end) - 1

                tag = tag_list[tag_idx]
                tag.pas = Pas()
                tag.pas.cfid = pinfo["cfid"]

                for casename, args in pinfo["args"].items():
                    for arg in args:
                        arg_tag_idx = arg.get("tid")
                        if arg_tag_idx is None:
                            arg_tag_idx = bisect.bisect(
                                self.tag_positions, arg["head_token_end"]) - 1
                        arg_sid = arg.get("sid")
                        if (arg_sid is None) or (len(arg["sid"]) == 0):
                            arg_sid = self.sid

                        arg = Argument(sid=arg_sid,
                                       tid=arg_tag_idx,
                                       midasi=arg["rep"])
                        tag.pas.arguments[casename].append(arg)
        else:
            # KNPの述語項構造をparse
            for tag in tag_list:
                if ("格解析結果" in tag.features) or ("述語項構造" in tag.features):
                    tag.pas = Pas(tag.tag_id, self)
Beispiel #2
0
    def test1(self):
        spec = """
# S-ID:1 KNP:4.2-a01607a1 DATE:2018/10/19 SCORE:-25.47925
* 4D <SM-主体><SM-人><BGH:彼/かれ><文頭><ハ><助詞><体言><一文字漢字><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><正規化代表表記:彼/かれ><主辞代表表記:彼/かれ>
+ 4D <SM-主体><SM-人><BGH:彼/かれ><文頭><ハ><助詞><体言><一文字漢字><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><名詞項候補><先行詞候補><人称代名詞><正規化代表表記:彼/かれ><主辞代表表記:彼/かれ><照応詞候補:彼><解析格:ガ><EID:5>
彼 かれ 彼 名詞 6 普通名詞 1 * 0 * 0 "代表表記:彼/かれ 漢字読み:訓 カテゴリ:人" <代表表記:彼/かれ><漢字読み:訓><カテゴリ:人><正規化代表表記:彼/かれ><漢字><かな漢字><名詞相当語><文頭><自立><内容語><タグ単位始><文節始><文節主辞>
は は は 助詞 9 副助詞 2 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* 2D <BGH:御飯/ごはん><ヲ><助詞><体言><係:ヲ格><区切:0-0><格要素><連用要素><正規化代表表記:御飯/ごはん><主辞代表表記:御飯/ごはん>
+ 2D <BGH:御飯/ごはん><ヲ><助詞><体言><係:ヲ格><区切:0-0><格要素><連用要素><名詞項候補><先行詞候補><正規化代表表記:御飯/ごはん><主辞代表表記:御飯/ごはん><照応詞候補:ご飯><解析格:ヲ><EID:6>
ご飯 ごはん ご飯 名詞 6 普通名詞 1 * 0 * 0 "代表表記:御飯/ごはん カテゴリ:人工物-食べ物 ドメイン:料理・食事" <代表表記:御飯/ごはん><カテゴリ:人工物-食べ物><ドメイン:料理・食事><正規化代表表記:御飯/ごはん><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
を を を 助詞 9 格助詞 1 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* 4P <BGH:食べる/たべる><用言:動><係:連用><レベル:B><並キ:述:&レベル:強><区切:3-5><ID:動詞連用><連用要素><連用節><動態述語><正規化代表表記:食べる/たべる><主辞代表表記:食べる/たべる><並列類似度:1.587><並結句数:2><並結文節数:2><提題受:30>
+ 4P <BGH:食べる/たべる><用言:動><係:連用><レベル:B><並キ:述:&レベル:強><区切:3-5><ID:動詞連用><連用要素><連用節><動態述語><正規化代表表記:食べる/たべる><主辞代表表記:食べる/たべる><用言代表表記:食べる/たべる><提題受:30><節-区切><節-主辞><格関係1:ヲ:ご飯><標準用言代表表記:食べる/たべる><EID:7><述語項構造:食べる/たべる:動1:ガ/N/彼/0/0/5;ヲ/C/ご飯/0/1/6;ニ/E/著者/2/-1/0;ト/-/-/-/-/-;デ/-/-/-/-/-;カラ/-/-/-/-/-;ヨリ/-/-/-/-/-;マデ/-/-/-/-/-;ヘ/-/-/-/-/-;時間/-/-/-/-/-;外の関係/-/-/-/-/-;修飾/-/-/-/-/-><省略解析信頼度:0.253><ガ格省略解析信頼度:0.000>
食べ たべ 食べる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:食べる/たべる ドメイン:料理・食事" <代表表記:食べる/たべる><ドメイン:料理・食事><正規化代表表記:食べる/たべる><かな漢字><活用語><連用形名詞化疑><自立><内容語><タグ単位始><文節始><文節主辞><用言表記末尾>
* 4D <SM-主体><SM-場所><SM-組織><BGH:大学/だいがく><ヘ><助詞><体言><係:ヘ格><区切:0-0><格要素><連用要素><正規化代表表記:大学/だいがく><主辞代表表記:大学/だいがく>
+ 4D <SM-主体><SM-場所><SM-組織><BGH:大学/だいがく><ヘ><助詞><体言><係:ヘ格><区切:0-0><格要素><連用要素><名詞項候補><先行詞候補><正規化代表表記:大学/だいがく><主辞代表表記:大学/だいがく><照応詞候補:大学><解析格:ヘ><EID:8>
大学 だいがく 大学 名詞 6 普通名詞 1 * 0 * 0 "代表表記:大学/だいがく 組織名末尾 カテゴリ:場所-施設 ドメイン:教育・学習" <代表表記:大学/だいがく><組織名末尾><カテゴリ:場所-施設><ドメイン:教育・学習><正規化代表表記:大学/だいがく><漢字><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
へ へ へ 助詞 9 格助詞 1 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* -1D <BGH:行く/いく><文末><時制-過去><句点><用言:動><レベル:C><区切:5-5><ID:(文末)><係:文末><提題受:30><主節><格要素><連用要素><動態述語><正規化代表表記:行く/いく><主辞代表表記:行く/いく>
+ -1D <BGH:行く/いく><文末><時制-過去><句点><用言:動><レベル:C><区切:5-5><ID:(文末)><係:文末><提題受:30><主節><格要素><連用要素><動態述語><正規化代表表記:行く/いく><主辞代表表記:行く/いく><用言代表表記:行く/いく><節-区切><節-主辞><主題格:一人称優位><格関係0:ガ:彼><格関係3:ヘ:大学><標準用言代表表記:行く/いく><EID:9><述語項構造:行く/いく:動12:ガ/N/彼/0/0/5;ニ/E/著者/2/-1/0;ト/-/-/-/-/-;デ/-/-/-/-/-;カラ/-/-/-/-/-;ヨリ/-/-/-/-/-;マデ/-/-/-/-/-;ヘ/C/大学/0/3/8;時間/-/-/-/-/-;外の関係/-/-/-/-/-;修飾/-/-/-/-/-;ノ/-/-/-/-/-><省略解析信頼度:0.777><ガ格省略解析信頼度:0.000>
行った いった 行く 動詞 2 * 0 子音動詞カ行促音便形 3 タ形 10 "代表表記:行く/いく 付属動詞候補(タ系) ドメイン:交通 反義:動詞:帰る/かえる" <代表表記:行く/いく><付属動詞候補(タ系)><ドメイン:交通><反義:動詞:帰る/かえる><正規化代表表記:行く/いく><移動動詞><かな漢字><活用語><表現文末><自立><内容語><タグ単位始><文節始><文節主辞><用言表記末尾>
。 。 。 特殊 1 句点 1 * 0 * 0 NIL <英記号><記号><文末><付属>
EOS
"""
        # <EID:7><述語項構造:食べる/たべる:動1:ガ/N/彼/0/0/5;ヲ/C/ご飯/0/1/6;ニ/E/著者/2/-1/0;ト/-/-/-/-/-;デ/-/-/-/-/-;カラ/-/-/-/-/-;ヨリ/-/-/-/-/-;マデ/-/-/-/-/-;ヘ/-/-/-/-/-;時間/-/-/-/-/-;外の関係/-/-/-/-/-;修飾/-/-/-/-/->
        pas = Pas(tid=4, result=BList(spec))

        self.assertEqual(pas.cfid, "行く/いく:動12")

        self.assertEqual(pas.arguments["ガ"][0].sid, "1")
        self.assertEqual(pas.arguments["ガ"][0].tid, 0)
        self.assertEqual(pas.arguments["ガ"][0].eid, 5)
        self.assertEqual(pas.arguments["ガ"][0].midasi, "彼")
        self.assertEqual(pas.arguments["ガ"][0].flag, "N")
        self.assertEqual(pas.arguments["ガ"][0].sdist, 0)
Beispiel #3
0
    def _setPAS(self):
        """Set PAS to BList with new format"""
        tag_list = self.tag_list()
        for pinfo in self._pinfos:
            pinfo = json.loads(pinfo)

            tag_idx = pinfo.get("tid")
            if tag_idx is None:
                end = pinfo["head_token_end"]
                tag_idx = bisect.bisect(self.tag_positions, end) - 1

            tag = tag_list[tag_idx]
            tag.features.pas = Pas()
            tag.features.pas.cfid = pinfo["cfid"]

            for casename, args in pinfo["args"].items():
                for arg in args:
                    arg_tag_idx = arg.get("tid")
                    if arg_tag_idx is None:
                        arg_tag_idx = bisect.bisect(self.tag_positions,
                                                    arg["head_token_end"]) - 1
                    arg_sid = arg.get("sid")
                    if arg_sid is None or not arg["sid"]:
                        arg_sid = self.sid

                    arg = Argument(arg_sid, arg_tag_idx, arg["rep"])
                    tag.features.pas.arguments[casename].append(arg)
Beispiel #4
0
    def __init__(self, spec, splitter=u"><", ignore_first_character=True):
        assert isinstance(spec, six.text_type)

        self.spec = spec.rstrip()
        self.pas = None
        self.rels = None
        if len(spec) == 0:
            return

        tag_start = 0
        if ignore_first_character:
            tag_start = 1
        tag_end = None
        while tag_end != -1:
            tag_end = self.spec.find(splitter, tag_start)
            kv_splitter = self.spec.find(u':', tag_start, tag_end)
            if self.spec[tag_start:].startswith(u'rel '):
                rel = Rel(self.spec[tag_start:tag_end])
                if rel.ignore == False:
                    if self.rels is None:
                        self.rels = []
                    self.rels.append(rel)
            elif kv_splitter == -1:
                key = self.spec[tag_start:tag_end]
                val = True  # Dummy value
                self[key] = val
            else:
                key = self.spec[tag_start:kv_splitter]
                val = self.spec[kv_splitter + 1:tag_end]
                self[key] = val

                if key == u'格解析結果':
                    self.pas = Pas(val, knpstyle=True)

            tag_start = tag_end + len(splitter)
Beispiel #5
0
    def test(self):
        result = BList(self.spec)
        pas = Pas(tid=4, result=result)  # <項構造:行く/いく:動1:ヘ/C/大学/3;ガ/N/彼/0>

        self.assertEqual(pas.cfid, "行く/いく:動1")

        self.assertEqual(pas.eid2tid, {0: 0, 1: 1, 2: 2, 3: 3, 4: 4})

        self.assertEqual(pas.arguments["ガ"][0].sid, "1")
        self.assertEqual(pas.arguments["ガ"][0].tid, 0)
        self.assertEqual(pas.arguments["ガ"][0].eid, 0)
        self.assertEqual(pas.arguments["ガ"][0].midasi, "彼")
        self.assertEqual(pas.arguments["ガ"][0].flag, "N")
        self.assertEqual(pas.arguments["ガ"][0].sdist, 0)
Beispiel #6
0
    def test(self):
        result = BList(self.spec)

        pas = Pas(
            tid=4, result=result
        )  #<EID:9><述語項構造:行く/いく:動12:ガ/N/彼/0/0/5;ニ/E/著者/2/-1/0;ト/-/-/-/-/-;デ/-/-/-/-/-;カラ/-/-/-/-/-;ヨリ/-/-/-/-/-;マデ/-/-/-/-/-;ヘ/C/大学/0/3/8;時間/-/-/-/-/-;外の関係/-/-/-/-/-;修飾/-/-/-/-/-;ノ/-/-/-/-/->

        self.assertEqual(pas.cfid, "行く/いく:動12")

        self.assertEqual(pas.arguments["ガ"][0].sid, "1")
        self.assertEqual(pas.arguments["ガ"][0].tid, 0)
        self.assertEqual(pas.arguments["ガ"][0].eid, 5)
        self.assertEqual(pas.arguments["ガ"][0].midasi, "彼")
        self.assertEqual(pas.arguments["ガ"][0].flag, "N")
        self.assertEqual(pas.arguments["ガ"][0].sdist, 0)
Beispiel #7
0
    def test2(self):
        spec = """
# S-ID:1 KNP:4.20-CF1.1 DATE:2020/08/04 SCORE:-41.95960
* 1D <文頭><感動詞><修飾><係:連用><区切:0-4><連用要素><連用節><正規化代表表記:こんにちは/こんにちは><主辞代表表記:こんにちは/こんにちは>
+ 1D <文頭><感動詞><修飾><係:連用><区切:0-4><連用要素><連用節><正規化代表表記:こんにちは/こんにちは>
こんにちは こんにちは こんにちは 感動詞 12 * 0 * 0 * 0 "代表表記:こんにちは/こんにちは" <代表表記:こんにちは/こんにちは><正規化代表表記:こんにちは/こんにちは><文頭><かな漢字><ひらがな><自立><内容語><タグ単位始><文節始><文節主辞>
* -1D <文末><体言><用言:判><体言止><レベル:C><区切:5-5><ID:(文末)><裸名詞><提題受:30><主節><状態述語><正規化代表表記::/:><主辞代表表記::/:>
+ -1D <文末><体言><用言:判><体言止><レベル:C><区切:5-5><ID:(文末)><裸名詞><提題受:30><主節><状態述語><判定詞><名詞項候補><先行詞候補><正規化代表表記::/:><用言代表表記::/:><時制-無時制><格解析結果::/::判0:ガ/U/-/-/-/->
: : : 名詞 6 普通名詞 1 * 0 * 0 "未知語:未対応文字種 品詞推定:特殊 疑似代表表記 代表表記::/: 品詞変更::-:-:-15-1-0-0" <未知語><品詞推定:特殊><疑似代表表記><代表表記::/:><正規化代表表記::/:><文末><表現文末><品詞変更::-:-:-15-1-0-0-"未知語:未対応文字種 品詞推定:特殊 疑似代表表記 代表表記::/:"><品曖-その他><記英数カ><英記号><記号><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
EOS
"""
        # <格解析結果::/::判0:ガ/U/-/-/-/->
        pas = Pas(tid=1, result=BList(spec))

        self.assertEqual(pas.cfid, ":/::判0")
Beispiel #8
0
    def test4(self):
        spec = """
# S-ID:1 KNP:5.0-165d699a DATE:2020/08/13 SCORE:-8.40889
* 1D <BGH:束の間/つかのま><文頭><時間><ガ><助詞><体言><判定詞><用言:判><係:連用><レベル:C><並キ:述:&ST:3.5&&&レベル:B><区切:3-5><ID:〜が><提題受:30><連用要素><連用節><状態述語><敬語:丁寧表現><正規化代表表記:束の間/つかのま><主辞代表表記:束の間/つかのま><並列類似度:1.258>
+ 1D <BGH:束の間/つかのま><文頭><時間><ガ><助詞><体言><判定詞><用言:判><係:連用><レベル:C><並キ:述:&ST:3.5&&&レベル:B><区切:3-5><ID:〜が><提題受:30><連用要素><連用節><状態述語><敬語:丁寧表現><節-機能-逆接:〜が><判定詞句><名詞項候補><先行詞候補><正規化代表表記:束の間/つかのま><主辞代表表記:束の間/つかのま><用言代表表記:束の間/つかのま><CF_NOT_FOUND><節-区切><節-主辞><時制:非過去><照応詞候補:束の間><標準用言代表表記:束の間/つかのま><EID:5><述語項構造:束の間/つかのま:判0>
束の間 つかのま 束の間 名詞 6 普通名詞 1 * 0 * 0 "代表表記:束の間/つかのま カテゴリ:時間" <代表表記:束の間/つかのま><カテゴリ:時間><正規化代表表記:束の間/つかのま><かな漢字><名詞相当語><文頭><自立><内容語><タグ単位始><文節始><文節主辞><用言表記先頭><用言表記末尾><用言意味表記末尾>
です です だ 判定詞 4 * 0 判定詞 25 デス列基本形 27 NIL <かな漢字><ひらがな><活用語><付属>
が が が 助詞 9 接続助詞 3 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* -1D <BGH:する/する><文末><サ変><句点><用言:動><レベル:C><区切:5-5><ID:(文末)><係:文末><提題受:30><主節><格要素><連用要素><動態述語><敬語:丁寧表現><正規化代表表記:ゲーム/げーむ><主辞代表表記:ゲーム/げーむ>
+ -1D <BGH:する/する><文末><句点><用言:動><レベル:C><区切:5-5><ID:(文末)><係:文末><提題受:30><主節><格要素><連用要素><動態述語><敬語:丁寧表現><サ変><正規化代表表記:ゲーム/げーむ><主辞代表表記:ゲーム/げーむ><用言代表表記:ゲーム/げーむ><節-区切><節-主辞><時制:非過去><主題格:一人称優位><標準用言代表表記:ゲーム/げーむ><EID:6><述語項構造:ゲーム/げーむ:動2:ガ/E/著者/2/-1/0;ニ/E/不特定-人/2/-1/2;ト/-/-/-/-/-;デ/-/-/-/-/-;カラ/-/-/-/-/-;マデ/-/-/-/-/-;時間/-/-/-/-/-;修飾/-/-/-/-/-;外の関係/-/-/-/-/-><省略解析信頼度:0.076><ガ格省略解析信頼度:0.000>
ゲーム げーむ ゲーム 名詞 6 普通名詞 1 * 0 * 0 "代表表記:ゲーム/げーむ ドメイン:レクリエーション カテゴリ:抽象物" <代表表記:ゲーム/げーむ><ドメイン:レクリエーション><カテゴリ:抽象物><正規化代表表記:ゲーム/げーむ><記英数カ><カタカナ><名詞相当語><サ変><自立><内容語><タグ単位始><文節始><固有キー><文節主辞><用言表記先頭><用言表記末尾><用言意味表記末尾>
し し する 動詞 2 * 0 サ変動詞 16 基本連用形 8 "代表表記:する/する 自他動詞:自:成る/なる 付属動詞候補(基本)" <代表表記:する/する><自他動詞:自:成る/なる><付属動詞候補(基本)><正規化代表表記:する/する><かな漢字><ひらがな><活用語><とタ系連用テ形複合辞><付属>
ます ます ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 基本形 2 "代表表記:ます/ます" <代表表記:ます/ます><正規化代表表記:ます/ます><かな漢字><ひらがな><活用語><表現文末><付属>
。 。 。 特殊 1 句点 1 * 0 * 0 NIL <英記号><記号><文末><付属>
EOS
"""
        # <述語項構造:束の間/つかのま:判0>
        pas = Pas(tid=0, result=BList(spec))

        self.assertEqual(pas.cfid, "束の間/つかのま:判0")
        self.assertEqual(len(pas.arguments), 0)
Beispiel #9
0
    def test3(self):
        spec = """
# S-ID:1 KNP:4.20-CF1.1 DATE:2020/08/03 SCORE:-45.92298
* 1D <文頭><サ変><サ変動詞><連体修飾><用言:動><係:連格><レベル:B><区切:0-5><ID:(動詞連体)><連体節><動態述語><正規化代表表記:表示/ひょうじ><主辞代表表記:表示/ひょうじ>
+ 1D <文頭><サ変動詞><連体修飾><用言:動><係:連格><レベル:B><区切:0-5><ID:(動詞連体)><連体節><動態述語><サ変><正規化代表表記:表示/ひょうじ><用言代表表記:表示/ひょうじ><時制-未来><格関係1:ガ:;><格解析結果:表示/ひょうじ:動2:ガ/N/;/1/0/1;ヲ/U/-/-/-/-;ニ/U/-/-/-/-;ト/U/-/-/-/-;デ/U/-/-/-/-;カラ/U/-/-/-/-;ヨリ/U/-/-/-/-;マデ/U/-/-/-/-;ヘ/U/-/-/-/-;時間/U/-/-/-/-;外の関係/U/-/-/-/-;ノ/U/-/-/-/-;修飾/U/-/-/-/-;ニヨル/U/-/-/-/-;トスル/U/-/-/-/-;ニツク/U/-/-/-/-;ニモトヅク/U/-/-/-/-;ニアワセル/U/-/-/-/-;ニタイスル/U/-/-/-/-;ニオク/U/-/-/-/->
表示 ひょうじ 表示 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:表示/ひょうじ カテゴリ:抽象物" <代表表記:表示/ひょうじ><カテゴリ:抽象物><正規化代表表記:表示/ひょうじ><文頭><漢字><かな漢字><名詞相当語><サ変><サ変動詞><自立><内容語><タグ単位始><文節始><文節主辞>
する する する 動詞 2 * 0 サ変動詞 16 基本形 2 "代表表記:する/する 自他動詞:自:成る/なる 付属動詞候補(基本)" <代表表記:する/する><自他動詞:自:成る/なる><付属動詞候補(基本)><正規化代表表記:する/する><とタ系連用テ形複合辞><かな漢字><ひらがな><活用語><付属>
* -1D <文末><体言><用言:判><体言止><レベル:C><区切:5-5><ID:(文末)><裸名詞><提題受:30><主節><状態述語><正規化代表表記:;/;><主辞代表表記:;/;>
+ -1D <文末><体言><用言:判><体言止><レベル:C><区切:5-5><ID:(文末)><裸名詞><提題受:30><主節><状態述語><判定詞><名詞項候補><先行詞候補><正規化代表表記:;/;><用言代表表記:;/;><時制-無時制><解析連格:ガ><格解析結果:;/;:判0:ガ/U/-/-/-/->
; ; ; 名詞 6 普通名詞 1 * 0 * 0 "未知語:その他 品詞推定:特殊 疑似代表表記 代表表記:;/; 品詞変更:;-;-;-15-1-0-0" <未知語><品詞推定:特殊><疑似代表表記><代表表記:;/;><正規化代表表記:;/;><文末><表現文末><品詞変更:;-;-;-15-1-0-0-"未知語:その他 品詞推定:特殊 疑似代表表記 代表表記:;/;"><品曖-その他><記英数カ><英記号><記号><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
EOS
"""
        # <格解析結果:表示/ひょうじ:動2:ガ/N/;/1/0/1;ヲ/U/-/-/-/-;ニ/U/-/-/-/-;ト/U/-/-/-/-;デ/U/-/-/-/-;カラ/U/-/-/-/-;ヨリ/U/-/-/-/-;マデ/U/-/-/-/-;ヘ/U/-/-/-/-;時間/U/-/-/-/-;外の関係/U/-/-/-/-;ノ/U/-/-/-/-;修飾/U/-/-/-/-;ニヨル/U/-/-/-/-;トスル/U/-/-/-/-;ニツク/U/-/-/-/-;ニモトヅク/U/-/-/-/-;ニアワセル/U/-/-/-/-;ニタイスル/U/-/-/-/-;ニオク/U/-/-/-/->
        pas = Pas(tid=0, result=BList(spec))

        self.assertEqual(pas.cfid, "表示/ひょうじ:動2")

        self.assertEqual(pas.arguments["ガ"][0].sid, "1")
        self.assertEqual(pas.arguments["ガ"][0].tid, 1)
        self.assertEqual(pas.arguments["ガ"][0].midasi, ";")
        self.assertEqual(pas.arguments["ガ"][0].flag, "N")
        self.assertEqual(pas.arguments["ガ"][0].sdist, 0)
Beispiel #10
0
    def test(self):
        spec = """
# S-ID:1 KNP:4.19-CF1.1 DATE:2018/10/19 SCORE:-22.05720
* 4D <文頭><SM-主体><SM-人><ハ><助詞><体言><一文字漢字><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><正規化代表表記:彼/かれ><主辞代表表記:彼/かれ>
+ 4D <文頭><SM-主体><SM-人><ハ><助詞><体言><一文字漢字><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><名詞項候補><先行詞候補><人称代名詞><正規化代表表記:彼/かれ><照応詞候補:彼><解析格:ガ><EID:0>
彼 かれ 彼 名詞 6 普通名詞 1 * 0 * 0 "代表表記:彼/かれ 漢字読み:訓 カテゴリ:人" <代表表記:彼/かれ><漢字読み:訓><カテゴリ:人><正規化代表表記:彼/かれ><文頭><漢字><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
は は は 助詞 9 副助詞 2 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* 2D <ヲ><助詞><体言><係:ヲ格><区切:0-0><格要素><連用要素><正規化代表表記:御飯/ごはん><主辞代表表記:御飯/ごはん>
+ 2D <ヲ><助詞><体言><係:ヲ格><区切:0-0><格要素><連用要素><名詞項候補><先行詞候補><正規化代表表記:御飯/ごはん><照応詞候補:ご飯><解析格:ヲ><EID:1>
ご飯 ごはん ご飯 名詞 6 普通名詞 1 * 0 * 0 "代表表記:御飯/ごはん カテゴリ:人工物-食べ物 ドメイン:料理・食事" <代表表記:御飯/ごはん><カテゴリ:人工物-食べ物><ドメイン:料理・食事><正規化代表表記:御飯/ごはん><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
を を を 助詞 9 格助詞 1 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* 4P <用言:動><係:連用><レベル:B><並キ:述:&レベル:強><区切:3-5><ID:動詞連用><連用要素><連用節><動態述語><正規化代表表記:食べる/たべる><主辞代表表記:食べる/たべる><並列類似度:1.587><並結句数:2><並結文節数:2><提題受:30>
+ 4P <用言:動><係:連用><レベル:B><並キ:述:&レベル:強><区切:3-5><ID:動詞連用><連用要素><連用節><動態述語><正規化代表表記:食べる/たべる><用言代表表記:食べる/たべる><提題受:30><格関係1:ヲ:ご飯><格解析結果:食べる/たべる:動1:ガ/U/-/-/-/-;ヲ/C/ご飯/1/0/1;ニ/U/-/-/-/-;ト/U/-/-/-/-;デ/U/-/-/-/-;カラ/U/-/-/-/-;ヨリ/U/-/-/-/-;マデ/U/-/-/-/-;ヘ/U/-/-/-/-;時間/U/-/-/-/-;外の関係/U/-/-/-/-;修飾/U/-/-/-/-;ノ/U/-/-/-/-;トスル/U/-/-/-/-;ニヨル/U/-/-/-/-;ニツク/U/-/-/-/-;トイウ/U/-/-/-/-;ニナラブ/U/-/-/-/-;ニツヅク/U/-/-/-/-;ニアワセル/U/-/-/-/-><EID:2><項構造:食べる/たべる:動1:ヲ/C/ご飯/1;ガ/N/彼/0>
食べ たべ 食べる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:食べる/たべる ドメイン:料理・食事" <代表表記:食べる/たべる><ドメイン:料理・食事><正規化代表表記:食べる/たべる><かな漢字><活用語><連用形名詞化疑><自立><内容語><タグ単位始><文節始><文節主辞>
* 4D <ヘ><助詞><体言><係:ヘ格><区切:0-0><格要素><連用要素><正規化代表表記:大学/だいがく><主辞代表表記:大学/だいがく>
+ 4D <ヘ><助詞><体言><係:ヘ格><区切:0-0><格要素><連用要素><名詞項候補><先行詞候補><正規化代表表記:大学/だいがく><照応詞候補:大学><解析格:ヘ><EID:3><項構造:大学/だいがく:名0>
大学 だいがく 大学 名詞 6 普通名詞 1 * 0 * 0 "代表表記:大学/だいがく 組織名末尾 カテゴリ:場所-施設 ドメイン:教育・学習" <代表表記:大学/だいがく><組織名末尾><カテゴリ:場所-施設><ドメイン:教育・学習><正規化代表表記:大学/だいがく><漢字><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞>
へ へ へ 助詞 9 格助詞 1 * 0 * 0 NIL <かな漢字><ひらがな><付属>
* -1D <文末><時制-過去><用言:動><レベル:C><区切:5-5><ID:(文末)><提題受:30><主節><動態述語><正規化代表表記:行く/いく?行う/おこなう><主辞代表表記:行く/いく?行う/おこなう>
+ -1D <文末><時制-過去><用言:動><レベル:C><区切:5-5><ID:(文末)><提題受:30><主節><動態述語><正規化代表表記:行く/いく?行う/おこなう><用言代表表記:行く/いく?行う/おこなう><主題格:一人称優位><格関係0:ガ:彼><格関係3:ヘ:大学><格解析結果:行く/いく:動1:ガ/N/彼/0/0/1;ヲ/U/-/-/-/-;ニ/U/-/-/-/-;ト/U/-/-/-/-;デ/U/-/-/-/-;カラ/U/-/-/-/-;ヨリ/U/-/-/-/-;マデ/U/-/-/-/-;ヘ/C/大学/3/0/1;時間/U/-/-/-/-;外の関係/U/-/-/-/-;修飾/U/-/-/-/-;ノ/U/-/-/-/-;トスル/U/-/-/-/-;ニツク/U/-/-/-/-;トイウ/U/-/-/-/-;ニカギル/U/-/-/-/-;ニヨル/U/-/-/-/-;ニアワセル/U/-/-/-/-><EID:4><項構造:行く/いく:動1:ヘ/C/大学/3;ガ/N/彼/0>
行った いった 行く 動詞 2 * 0 子音動詞カ行促音便形 3 タ形 10 "代表表記:行く/いく 付属動詞候補(タ系) ドメイン:交通 反義:動詞:帰る/かえる" <代表表記:行く/いく><付属動詞候補(タ系)><ドメイン:交通><反義:動詞:帰る/かえる><正規化代表表記:行く/いく?行う/おこなう><品曖><ALT-行った-おこなった-行う-2-0-12-10-"代表表記:行う/おこなう"><品曖-動詞><原形曖昧><文末><表現文末><移動動詞><かな漢字><活用語><自立><内容語><タグ単位始><文節始><文節主辞><用言曖昧性解消>
EOS
"""
        # <項構造:行く/いく:動1:ヘ/C/大学/3;ガ/N/彼/0>
        pas = Pas(tid=4, result=BList(spec))

        self.assertEqual(pas.cfid, "行く/いく:動1")

        self.assertEqual(pas.eid2tid, {0: 0, 1: 1, 2: 2, 3: 3, 4: 4})

        self.assertEqual(pas.arguments["ガ"][0].sid, "1")
        self.assertEqual(pas.arguments["ガ"][0].tid, 0)
        self.assertEqual(pas.arguments["ガ"][0].eid, 0)
        self.assertEqual(pas.arguments["ガ"][0].midasi, "彼")
        self.assertEqual(pas.arguments["ガ"][0].flag, "N")
        self.assertEqual(pas.arguments["ガ"][0].sdist, 0)