1
私は英語のFCG文法を持っており、ボキャブラリー語を含むテキストを解析しています。現時点では、独自の診断と修復を作成しています。最新のFCGリリースで未知語を扱う標準的な方法はありますか?FCGで不明な単語を処理するための標準的な診断はありますか?
私は英語のFCG文法を持っており、ボキャブラリー語を含むテキストを解析しています。現時点では、独自の診断と修復を作成しています。最新のFCGリリースで未知語を扱う標準的な方法はありますか?FCGで不明な単語を処理するための標準的な診断はありますか?
現在のところ、独自のカスタマイズされた診断と修復を作成することが最適なソリューションです。しかし、FCGの次のリリースでは、統合された診断と修復のライブラリが含まれます。未知語のための1つは、より多くのまたは次のようにそれほど見ます:未知語を検出するための
診断の非常に一般的な新しい語彙の建設を(追加するための
(defmethod diagnose ((diagnostic diagnose-unknown-words) (node cip-node)
&key &allow-other-keys)
"Diagnose that the fully expanded structure contains untreated strings"
(when (fully-expanded? node)
(let ((strings-in-root (get-strings (assoc 'root
(left-pole-structure
(car-resulting-cfs (cipn-car node)))))))
(when strings-in-root
(let ((problem (make-instance 'unknown-words)))
(set-data problem 'strings strings-in-root)
problem)))))
修理(すべてのノードの作成後に実行します)もちろん、あなた自身の文法にカスタマイズする必要があります):
(defmethod repair ((repair add-lexical-cxn)
(problem unknown-words)
(node cip-node)
&key &allow-other-keys)
"Repair by making a new lexical construction for the first untreated string"
(let ((uw (first (get-data problem 'strings))))
(multiple-value-bind (cxn-set lex-cxn)
(eval `(def-fcg-cxn ,(make-symbol (upcase (string-append uw "-cxn")))
((?word-unit
(args (?ref))
(syn-cat (lex-class ?lex-class))
(sem-cat (sem-class ?sem-class)))
<-
(?word-unit
(HASH meaning ((,(intern (upcase uw)) ?ref)))
--
(HASH form ((string ?word-unit ,uw)))))
:cxn-inventory ,(copy-object (original-cxn-set (construction-inventory node)))
:cxn-set lex))
(declare (ignore cxn-set))
(make-instance 'fix
:repair repair
:problem problem
:restart-data lex-cxn))))