НЛП: сравните эти два предложения. Это неправильная классификация? - PullRequest
0 голосов
/ 04 августа 2020

Я использую анализ зависимости пространства. Я озадачен этими двумя очень похожими предложениями.

Предложение 1:

text='He noted his father was a nice guy.'

Обратите внимание, что в этом предложении «отец» явно является субъектом «отец был хорошим парнем»:

[(0, 'He', '-PRON-', 'PRON', 'PRP', 'nsubj'), (1, 'noted', 'note', 'VERB', 'VBD', 'ROOT'), (2, 'his', '-PRON-', 'DET', 'PRP$', 'poss'), (3, 'father', 'father', 'NOUN', 'NN', 'nsubj'), (4, 'was', 'be', 'VERB', 'VBD', 'ccomp'), (5, 'a', 'a', 'DET', 'DT', 'det'), (6, 'nice', 'nice', 'ADJ', 'JJ', 'amod'), (7, 'guy', 'guy', 'NOUN', 'NN', 'attr'), (8, '.', '.', 'PUNCT', '.', 'punct')]

        noted              
  ________|_____            
 |   |         was         
 |   |     _____|___        
 |   |  father     guy     
 |   |    |      ___|___    
 He  .   his    a      nice

for child in the_verb.children:
    print(child,child.dep_)
    
>> father nsubj
>> guy attr

for ancestor in the_verb.ancestors:
    print(ancestor,ancestor.dep_)
    
>> noted ROOT

Предложение 2:

text='He noted his father, as \"a man with different attributes\", was a nice guy.'

Это небольшая вариация предыдущего предложения. «отец» больше не предмет.

[(0, 'He', '-PRON-', 'PRON', 'PRP', 'nsubj'), (1, 'noted', 'note', 'VERB', 'VBD', 'ROOT'), (2, 'his', '-PRON-', 'DET', 'PRP$', 'poss'), (3, 'father', 'father', 'NOUN', 'NN', 'dobj'), (4, ',', ',', 'PUNCT', ',', 'punct'), (5, 'as', 'as', 'ADP', 'IN', 'prep'), (6, '"', '"', 'PUNCT', '``', 'punct'), (7, 'a', 'a', 'DET', 'DT', 'det'), (8, 'man', 'man', 'NOUN', 'NN', 'pobj'), (9, 'with', 'with', 'ADP', 'IN', 'prep'), (10, 'different', 'different', 'ADJ', 'JJ', 'amod'), (11, 'attributes', 'attribute', 'NOUN', 'NNS', 'pobj'), (12, '"', '"', 'PUNCT', "''", 'punct'), (13, ',', ',', 'PUNCT', ',', 'punct'), (14, 'was', 'be', 'VERB', 'VBD', 'conj'), (15, 'a', 'a', 'DET', 'DT', 'det'), (16, 'nice', 'nice', 'ADJ', 'JJ', 'amod'), (17, 'guy', 'guy', 'NOUN', 'NN', 'attr'), (18, '.', '.', 'PUNCT', '.', 'punct')]

                noted                                 
  ________________|____________________________        
 |   |   |   |    |         as                 |      
 |   |   |   |    |         |                  |       
 |   |   |   |    |        man                 |      
 |   |   |   |    |      ___|______            |       
 |   |   |   |    |     |   |     with        was     
 |   |   |   |    |     |   |      |           |       
 |   |   |   |  father  |   a  attributes     guy     
 |   |   |   |    |     |   |      |        ___|___    
 He  ,   ,   .   his    "   "  different   a      nice


the_verb=spacy_doc[14]

for child in the_verb.children:
    print(child,child.dep_)
    
>> guy attr

for ancestor in the_verb.ancestors:
    print(ancestor,ancestor.dep_)
    
>> noted ROOT

Я пытаюсь понять, как простор классифицирует предложения. Является ли второй случай ошибкой классификации? Я имею в виду, что "отец" по-прежнему должен быть предметом обсуждения?

1 Ответ

1 голос
/ 04 августа 2020

Интересно, думаете ли вы о дереве синтаксического анализа вместо дерева зависимостей ...

Если честно, меня всегда смущали деревья зависимостей. Они хороши для определения относительных связей между структурами, но я не думаю, что они так хороши, например, для определения абсолютных семанти c структур. Правила структуры фраз достаточно хороши для определения абсолютных частей речи конкретных существительных, глаголов и их составных частей; хотя все еще несовершенно. Хотя синтаксический анализатор зависимостей можно использовать для обнаружения фрагментов существительных, предложных фраз и вывода глагольных фраз, я не думаю, что это его основная функция. Тем не менее, это является основной функцией дерева синтаксического анализа.

Возвращаясь к вашему вопросу:

То, как вы говорите об «отце» как субъекте, звучит так: вы пытаетесь понять глубокую синтаксическую структуру c (абсолютную), но используя относительную модель (анализатор зависимостей).

По сути, я считаю, что фраза '' означает «человек с разными атрибутами» , 'добавляет слои в дерево зависимостей. Эти слои отделяют собственно подлежащее «его отец» от глагольной фразы «был хорошим человеком». Я бы предположил, что это добавление слоя для запятых, еще одного уровня для кавычек, еще одного слоя для предложения as. До тех пор, пока в конечном итоге относительная взаимосвязь, которую должен определять анализатор зависимостей, не зайдет «слишком далеко».

Синтаксический анализ c может быть настолько хорош, насколько хороши модели, которые их генерируют. Фактически, вы увидите, что SpaCy имеет 2 индикатора POS, которые оба пытаются выполнить синтаксический анализ c. Один генерируется анализатором зависимостей (доступен в token.dep_), а другой генерируется статистической моделью (доступен в token.pos_). Вы также увидите, что эти индикаторы POS не всегда совпадают из-за неточной природы моделей, которые их предсказывают.

Я полагаю, что из интереса NLTK имеет более традиционную фразу - доступно дерево разбора на основе правил; хотя даже у них есть ограничения. Если вы хотите глубокий , жесткий синтаксис c анализ реальных предложений, вы можете попробовать что-то вроде Грамматика структуры фраз, управляемая головой (HPSG) , но вы ' Увидим, что все начинает становиться немного немного техническим. :)

...