Próbuję użyć NLTK do parsowania semantycznego mówionego nawigacji poleceń takich jak „udać się do San Francisco”, „daj mi wskazówki do 123 Main Street”, itpsemantyczna parsowania z NLTK
Można to zrobić z dość prostej gramatyki CFG takich jak
S -> COMMAND LOCATION
COMMAND -> "go to" | "give me directions to" | ...
LOCATION -> CITY | STREET | ...
problemem jest to, że wiąże się to non-atomowej (więcej niż jedno słowo-long) literały takich jak „idź do”, które nie wydają się NLTK należy skonfigurować dla (popraw mnie jeśli się mylę). Zadanie analizowania ma wstępne oznaczenie, a wszyscy taggerzy zawsze tagują poszczególne słowa. Tak więc, moje opcje wydają się być:
a) Zdefiniuj niestandardowy tagger, który może przypisać nie-syntaktyczne znaczniki do sekwencji słów zamiast pojedynczych słów (np. "Idź do": "COMMAND"). b) Za pomocą funkcji do zwiększenia gramatykę, na przykład, podobnie jak:
COMMAND -> VB[sem='go'] P[sem='to'] | ...
c) Za pomocą Chunker wyodrębnić podstruktury jak polecenie, a następnie stosuje się analizator do wyniku. Czy NLTK pozwala na kaskadowanie parowania kaskadowego?
Niektóre z tych opcji wydają się zawiłe (hacki). Czy istnieje dobry sposób?