Является ли POS-маркировка детерминированной? - PullRequest
8 голосов
/ 01 июля 2011

Я пытался обернуть голову, почему это происходит, но я надеюсь, что кто-то может пролить свет на это.Я пытаюсь пометить следующий текст:

ae0.475      X  mod 
ae0.842      X  mod
ae0.842      X  mod 
ae0.775      X  mod 

, используя следующий код:

import nltk

file = open("test", "r")

for line in file:
        words = line.strip().split(' ')
        words = [word.strip() for word in words if word != '']
        tags = nltk.pos_tag(words)
        pos = [tags[x][1] for x in range(len(tags))]
        key = ' '.join(pos)
        print words, " : ", key

, и получаю следующий результат:

['ae0.475', 'X', 'mod']  :  NN NNP NN
['ae0.842', 'X', 'mod']  :  -NONE- NNP NN
['ae0.842', 'X', 'mod']  :  -NONE- NNP NN
['ae0.775', 'X', 'mod']  :  NN NNP NN

И яне понимаюКто-нибудь знает, в чем причина этого несоответствия?Я не очень уверен в точности меток pos, потому что я пытаюсь извлечь некоторые шаблоны, но, похоже, в разных случаях используются разные теги для слова, которое выглядит «почти» одинаково.

КакВ результате я заменил все числа на 1 и решил проблему:

['ae1.111', 'X', 'mod']  :  NN NNP NN
['ae1.111', 'X', 'mod']  :  NN NNP NN
['ae1.111', 'X', 'mod']  :  NN NNP NN
['ae1.111', 'X', 'mod']  :  NN NNP NN

, но мне любопытно, почему в моем первом случае он пометил экземпляр разными тегами.Есть предложения?

Ответы [ 2 ]

8 голосов
/ 01 июля 2011

Мои лучшие попытки понять непокрытое это от кого-то, кто не использует весь Коричневый корпус:

Обратите внимание, что слова, которые есть у тегера не видел раньше, например, порицали, получить метку None.

Итак, я думаю, что-то, похожее на ae1.111, должно появиться в файле корпуса, но не похоже на ae0.842. Это немного странно, но это причина для присвоения тега -NONE-.

Редактировать: Мне стало очень любопытно, сам скачал «Коричневый корпус» и искал в нем обычный текст. Число 111 появляется в нем 34 раза, а число 842 появляется только 4 раза. 842 появляется только в середине суммы в долларах или как последние 3 цифры года, а 111 появляется много раз сам по себе как номер страницы. 775 также отображается один раз как номер страницы.

Итак, я собираюсь сделать предположение, что из-за закона Бенфорда вы будете в конечном итоге сопоставлять числа, начинающиеся с 1, 2 и 3, гораздо чаще, чем числа, начинающиеся с 8 или 9, так как это чаще всего номера страниц случайной страницы, которая будет указана в книге. Мне было бы очень интересно узнать, правда ли это (но, конечно, недостаточно, чтобы сделать это самостоятельно!).

3 голосов
/ 01 июля 2011

Это «детерминистический» в том смысле, что одно и то же предложение будет помечаться одинаково с использованием одного и того же алгоритма каждый раз, но так как ваши слова отсутствуют в данных nltk (на самом деле, это даже не настоящие слова в реальных предложениях) он будет использовать некоторый алгоритм, чтобы попытаться определить, какими будут теги. Это будет означать, что у вас могут быть разные теги, когда слова меняются (даже если изменение отличается от вашего), и что теги не будут иметь большого смысла в любом случае.

Что заставляет меня задуматься, почему вы пытаетесь использовать НЛП для конструкций с ненатуральным языком.

...