C# 自然语言处理。词性标注与句法分析
我目前正在努力实现自己的英语语言处理库。真正的挑战是通过所有丰富的理论材料,了解如何将其全部纳入生产轨道 到目前为止,我已经取得了一些进展。我实现了句子结束检测器和早期解析器。但事实是,除非我在终端字典中包含特定的单词,否则解析器无法识别它并构建图表 为了更明确,请查看我的CFG语法的以下示例:C# 自然语言处理。词性标注与句法分析,c#,nlp,pos-tagger,earley-parser,C#,Nlp,Pos Tagger,Earley Parser,我目前正在努力实现自己的英语语言处理库。真正的挑战是通过所有丰富的理论材料,了解如何将其全部纳入生产轨道 到目前为止,我已经取得了一些进展。我实现了句子结束检测器和早期解析器。但事实是,除非我在终端字典中包含特定的单词,否则解析器无法识别它并构建图表 为了更明确,请查看我的CFG语法的以下示例: Production[] ppTerminals = { new Production(new Word[] { new Terminal("Preposition"), new NonTerminal
Production[] ppTerminals = { new Production(new Word[] { new Terminal("Preposition"), new NonTerminal("NP") })};
AddProduction(ppTerminal, "PP"); // Add production
...
DictionaryBuilder(Prepositions.SingleWord, "Preposition"); //Where
Prepositions.SingleWord is a hard-coded list of possible prepositions.
结果,如果Earley解析器遇到未知的两个单词PP,比如“up to”,它将无法识别它并构建图表
所以我认为在语法分析器之前,我还需要一些其他的东西来处理我的句子,然后将相关数据转发给语法分析器。其主要思想是在词性标注阶段动态建立词典,然后Earley解析器可以识别单词
我实现了标记器和lexer。作为输出,我得到了S表达式树,如:
(sentence
(word BOND)
(word TRADING)
(word REVENUES)
(word AT)
(word GOLDMAN)
(word SACHS)
(word SLID)
(value 40%)
...
(word AND)
(word CURRENCIES)
(word WAS)
(currency $1.16BN)
...
)
但我熟悉隐马尔可夫模型和类似的算法,比如寻找最可能状态序列的维特比算法和参数估计的鲍姆-韦尔奇算法
你能不能给我一个建议,如何将早期语法分析器和基于HMM的词性标注联系起来。或者,也许,我走错了方向,那么请指出我错在哪里。现在我有点糊涂了。谢谢大家!