自然语言处理。 POS标记和语法分析

时间:2017-07-21 07:28:16

标签: c# nlp pos-tagger earley-parser

我目前正在努力实施自己的英语语言处理库。真正的挑战是要经历所有丰富的理论材料,并获得如何将其全部放在生产轨道上的重要性。

到目前为止,我已经取得了一些进展。我实现了句末句检测器和早期解析器。但事实是,除非我在终端字典中包含解析器无法识别它并构建图表的特定单词。

为了更明确,请查看我的CFGrammar的以下示例:

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就像"直到"它将无法识别并构建图表。

所以我认为在语法分析器之前我需要其他东西来处理我的句子,然后将相关数据转发给解析器。主要思想是词典在POS标记阶段动态构建,然后Earley解析器可以识别单词。

我实现了tokenizer和词法分析器。作为输出,我有S-Expression树,如:

(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)
  ...
 )

但我熟悉隐马尔可夫模型和诸如Viterbi算法之类的算法,用于寻找最可能的状态序列,以及Baum-Welch算法用于参数估计。

请您给我一些建议如何将基于HMM的Earley解析器和POS标记链接在一起。或者,可能,我的方向是错误的,所以请指出我错误的地方。现在我有点困惑。谢谢!

0 个答案:

没有答案