Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

文の状態によってマッチしたりしなかったりする #13

Open
ttrace opened this issue May 21, 2021 · 4 comments
Open

文の状態によってマッチしたりしなかったりする #13

ttrace opened this issue May 21, 2021 · 4 comments
Labels
bug Something isn't working

Comments

@ttrace
Copy link

ttrace commented May 21, 2021

行頭の空白があるかどうかによってマッチ結果が異なります(現状のバージョンの場合は、一行目だけマッチする)。

辞書:

module.exports = [
    // ルール 助詞の連続(タイプミス)
    {
        message: `「$1$2$3」には助詞の連続があります(係助詞の連続) err 1`,
        //名詞はは連続しない。
        expected: '$1$2',
        tokens: [
            {
                "_capture": "$1"
            },{
                "pos": "助詞",
                "pos_detail_1": "係助詞",
                "_capture": "$2"
            },{
                "pos": "助詞",
                "pos_detail_1": "係助詞",
                "_capture": "$3"
            }
        ]
    }
];

例文:

名詞はは連続しない。
 名詞はは連続しない。

@azu
Copy link
Member

azu commented May 24, 2021

対象となるテキストを書いているファイル形式はMarkdown or Text どちらでしょうか?
(ASTの状態が関係していそうな気がします)

textlint 12.0.0でMarkdownパーサのアップデートして、先頭の空白は Str に含まれなくなったので、この2つの行の差分が吸収されそうな気もしています。

https://textlint.github.io/astexplorer/#/snippet/woXCqHBhcnNlcklEwrh0ZXh0bGludDptxINrZG93bi10by1hc3TCqMSFdHTEkGdzwoHEisSMxI7EkMSSxJRyxJbEmMSaxJzEnsSgw4DCqHbEhnNpb27EqMSqxI3Ej8SRxJPElcSXxJnEm8SdxJ90wqYxMi4wxY_CqGZpbGVuYW1lwrBzb3VyY2UudW5kZcWTbmVkwqRjb8Wlw5lEw6XCkMKNw6jCqcKew6PCgcKvxbfCr8OpwoDCo8OnwrbCmsW3wpfFt8KqxbfChMOjwoDCggoKLcaNxosgxbHFs8W1xbrFusW8xb7GgMaCxoTGhsaIwoI}

あと、これは

名詞はは連続しない。
 名詞はは連続しない。

と書いた場合に一行目のみにしかマッチしない?

名詞はは連続しない。

 名詞はは連続しない。

両方別々のパラグラフとして書いた場合に、後者にはマッチしない? のどちらでしょうか?

@ttrace
Copy link
Author

ttrace commented May 25, 2021

Textファイルに以下の連続した行を書いてtextlintをかけた場合に、一行目のみにマッチして、二行目にマッチしないという意味です。
markdownでも試してみます。

名詞はは連続しない。 名詞はは連続しない。

@azu azu added the bug Something isn't working label May 25, 2021
@azu
Copy link
Member

azu commented May 25, 2021

一行目のみにマッチして、二行目にマッチしないという意味です。

このルールはセンテンス分解していないので、形態素解析結果が1行目と2行目で異なるのかと思いましたが、
同じ結果になる気がしますね。

https://azu.github.io/morpheme-match/?text=%E5%90%8D%E8%A9%9E%E3%81%AF%E3%81%AF%E9%80%A3%E7%B6%9A%E3%81%97%E3%81%AA%E3%81%84%E3%80%82%20%20%E5%90%8D%E8%A9%9E%E3%81%AF%E3%81%AF%E9%80%A3%E7%B6%9A%E3%81%97%E3%81%AA%E3%81%84%E3%80%82

morpheme-match-allの方が、一度マッチすると繰り返しマッチが上手く出来ていないのかもしれません。

@ttrace
Copy link
Author

ttrace commented Aug 6, 2021

ttrace/morpheme-match-textlint/
に、再現用のテストを書きました。

azu/morpheme-match@master...ttrace:debug-match-rule#diff-392fe26183bb619e42e27aa51f37fc1d1fcc99940a70ff2a9ce1345053672de1
azu/morpheme-match@master...ttrace:debug-match-rule#diff-ebbd233f3019402b6a5abdd736938aa4d5f277e2ee05a2d36179c0f8abe17dcc

マージできる状態かと思います。

        const resultsC = await matchAll("名詞はは連続しない。");
        const resultsD = await matchAll(" 名詞はは連続しない。");

の両方でマッチする辞書を用いても、上のtextがマッチしません。
関数を遡って確かめてみたところ、上の文のtokenがこのテストの前に実行しているtokenと混ざっていました。
とりあえず報告いたします。

{
    word_id: 93100,
    word_type: 'KNOWN',
    word_position: 3,
    surface_form: 'の',
    pos: '助詞',
    pos_detail_1: '連体化',
    pos_detail_2: '*',
    pos_detail_3: '*',
    conjugated_type: '*',
    conjugated_form: '*',
    basic_form: 'の',
  …'*',
    pos_detail_3: '*',
    conjugated_type: '*',
    conjugated_form: '*',
    basic_form: '名詞',
    reading: 'メイシ',
    pronunciation: 'メイシ'
  },
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants