パスワードを忘れた? アカウント作成
14192743 journal
人工知能

yasuokaの日記: 「New York」と「Hà Nội」と「新大阪」は1語なのか2語なのか

日記 by yasuoka

英語における空白は、一般には単語の区切りを示している。たとえば「New York」という地名は、通常「New」と「York」の2語から構成されていると考えられている。Stanza 1.0.1で「I love New York.」という文を係り受け解析してみよう。

$ pip3 install stanza
$ python3
>>> import stanza
>>> stanza.download("en")
>>> en=stanza.Pipeline("en")
>>> s=en("I love New York.")
>>> print(s)
[
  [
    {
      "id": "1",
      "text": "I",
      "lemma": "I",
      "upos": "PRON",
      "xpos": "PRP",
      "feats": "Case=Nom|Number=Sing|Person=1|PronType=Prs",
      "head": 2,
      "deprel": "nsubj",
      "misc": "start_char=0|end_char=1"
    },
    {
      "id": "2",
      "text": "love",
      "lemma": "love",
      "upos": "VERB",
      "xpos": "VBP",
      "feats": "Mood=Ind|Tense=Pres|VerbForm=Fin",
      "head": 0,
      "deprel": "root",
      "misc": "start_char=2|end_char=6"
    },
    {
      "id": "3",
      "text": "New",
      "lemma": "New",
      "upos": "PROPN",
      "xpos": "NNP",
      "feats": "Number=Sing",
      "head": 4,
      "deprel": "compound",
      "misc": "start_char=7|end_char=10"
    },
    {
      "id": "4",
      "text": "York",
      "lemma": "York",
      "upos": "PROPN",
      "xpos": "NNP",
      "feats": "Number=Sing",
      "head": 2,
      "deprel": "obj",
      "misc": "start_char=11|end_char=15"
    },
    {
      "id": "5",
      "text": ".",
      "lemma": ".",
      "upos": "PUNCT",
      "xpos": ".",
      "head": 2,
      "deprel": "punct",
      "misc": "start_char=15|end_char=16"
    }
  ]
]

一方、ベトナム語における空白は、一般には音節の区切りを示している。たとえば「Hà Nội」という地名は、2音節からなる単語であり、「Hà Nội」全体で1語だとみなされる。pyvi 0.1で「Yêu Hà Nội.」という文を形態素解析してみよう。

$ pip3 install pyvi
$ python3
>>> from pyvi import ViTokenizer,ViPosTagger
>>> vi=lambda txt:ViPosTagger.postagging(ViTokenizer.tokenize(txt))
>>> s=vi("Yêu Hà Nội.")
>>> print(s)
(['Yêu', 'Hà_Nội', '.'], ['V', 'Np', 'F'])

では、空白のない日本語における複合地名は、どう扱うべきだろう。「新大阪が好き。」という文を、mecab-python3 0.996.5のIPAdicで形態素解析してみよう。

$ pip3 install mecab-python3
$ python3
>>> import MeCab
>>> ja=MeCab.Tagger().parse
>>> s=ja("新大阪が好き。")
>>> print(s)
新大阪    名詞,固有名詞,地域,一般,*,*,新大阪,シンオオサカ,シンオーサカ
が    助詞,格助詞,一般,*,*,*,が,ガ,ガ
好き    名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ
。    記号,句点,*,*,*,*,。,。,。
EOS

同じ「新大阪が好き。」という文を、今度はfugashi 0.2.1のunidic-liteで形態素解析してみよう。

$ pip3 install 'fugashi[unidic-lite]'
$ python3
>>> import fugashi
>>> ja=fugashi.Tagger().parse
>>> s=ja("新大阪が好き。")
>>> print(s)
新    シン    シン    新    接頭辞
大阪    オーサカ    オオサカ    オオサカ    名詞-固有名詞-地名-一般            0
が    ガ    ガ    が    助詞-格助詞
好き    スキ    スキ    好き    形状詞-一般            2
。            。    補助記号-句点
EOS

すなわち「新大阪」は、IPAdicでは1語とみなされているが、unidic-liteでは「新」「大阪」の2語とみなされている。今後の形態素解析は、UniDic(というか国語研短単位)の「新」「大阪」の方が主流になっていくと思うのだが、さて、日本の「学校文法」は、それを許してくれるだろうか。

この議論は、yasuoka (21275)によって「 ログインユーザだけ」として作成されている。 ログインしてから来てね。
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...