Принудительный анализатор Стэнфорда принимает POS-теги, не лицензированные лексиконом синтаксического анализатора. - PullRequest
0 голосов
/ 10 июня 2011

У меня есть файл предопределенных предложений, некоторые из которых находятся в императиве (неявный субъект, глагол первым и т. Д.). Без какой-либо частичной пометки синтаксический анализатор Стэнфорда ошибочно помечает первое слово (глагол) как существительное в предмете большинства (но не всех) этих императивных предложений. С частичной пометкой (что, я уверен, я делаю правильно - я отредактировал и перекомпилировал LexicalizedParser, чтобы убедиться, что соответствующие параметры командной строки распознаются и оказываются в нужном месте в lexicalizedParser.java) в первых словах этих предложений (используя _VB), он ведет себя no иначе, чем если бы тегирования не было.

Согласно сводке пакета lexparser (посмотрите на 60% пути вниз по странице "Есть некоторые ограничения на интерпретацию ..."), это потому, что на некоторых тегах POS VB этих слов слишком странно, чтобы парсер мог поверить.

Как мне заставить парсер читать и следить за всеми тегами (желательно из командной строки)? Обновить лексикон?

Использование EnglishFactored.ser.gz вместо EnglishPCFG.ser.gz уменьшает эту проблему, но не устраняет.

Кто-то отправил похожий вопрос в список рассылки Стэнфорда [parser-user] пару лет назад, но я не могу найти ответ на этот пост.

EDIT: При использовании другой версии синтаксического анализатора (от 20 августа 2010 г.) эта проблема, по-видимому, не возникает // вообще //.

1 Ответ

1 голос
/ 10 июня 2011

В настоящее время нет способа заставить теги разбирать вещи так, чтобы они считались «слишком странными».Если он считает тег для слова невозможным, вы не можете сделать это возможным, но вы можете указать, что он должен использовать в диапазоне, который он считает возможным.Обычно этого достаточно.Здесь должно быть достаточно.Вот пример.Как вы заметили, это часто дает неверные указания без посторонней помощи (отчасти потому, что они плохо подтверждаются данными обучения. Они не всегда ошибаются, но обычно так и есть, и я выбрал 3, что он ошибается:

$ cat imper.txt
Use care when opening.
Brush your hair!
Shut the door.
$ java -cp stanford-parser.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser englishPCFG.ser.gz imper.txt 2> /dev/null
(ROOT
  (S
    (NP (NNP Use))
    (VP (VBP care)
      (SBAR
        (WHADVP (WRB when))
        (S
          (VP (VBG opening)))))
    (. .)))

(ROOT
  (NP
    (NP (NNP Brush))
    (NP (PRP$ your) (NN hair))
    (. !)))

(ROOT
  (NP
    (NP (NNP Shut))
    (NP (DT the) (NN door))
    (. .)))

Но с токенами и частично помеченным текстом, подобным этому:

$ cat imper.tok
Use_VB care when opening .
Brush_VB your hair !
Shut_VB the door .

все исправлено:

$ java -cp stanford-parser.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser -tokenized -tagSeparator _ englishPCFG.ser.gz imper.tok 2> /dev/null
(ROOT
  (S
    (VP (VB Use)
      (NP (NN care))
      (SBAR
        (WHADVP (WRB when))
        (S
          (VP (VBG opening)))))
    (. .)))

(ROOT
  (S
    (VP (VB Brush)
      (NP (PRP$ your) (NN hair)))
    (. !)))

(ROOT
  (S
    (VP (VB Shut)
      (NP (DT the) (NN door)))
    (. .)))

Но вы должны использовать правильные теги.Он не будет помечать «Использование» как VB. Это считается слишком странным. «Использование» в качестве глагола должно быть VBG. Это настоящая форма причастия, а не голый глагол, используемый в императивах.

...