1
我對patterns
舉行的各種言語模式有一個先驗概率分佈。我還擁有一系列從詞標記化獲得的詞性標記列表,編號爲sequences
。如何根據現有的模式分佈將序列劃分爲不同長度的元組?
我想將sequences
中的每個列表劃分爲任意數量的不相交的片段,其中每個片段存在於patterns
中,並且聯合概率被最大化。
例如,序列['NN', 'VBG', 'CC', 'VBG']
將理想地劃分爲以下:[('NN',), ('VBG',), ('VBG',)]
。
我想不出一種效率非常低的方法。也許如果patterns
被組織在某種樹形結構中會有幫助嗎?
patterns = {('NN',): 0.40132345717065276,
('VBG',): 0.22273379631859294,
('JJ', 'NN'): 0.075111492116086656,
('NN', 'NN'): 0.056656296053708859,
...
('NN', 'NN', 'VBG'): 0.00039491807857906547,
('RB', 'VBD'): 0.00033712518903090955,
('NN', 'CD'): 0.00019264296516051976,
('VBG', 'NN'): 0.0017337866864446778}
sequences = [['NN', 'VBG', 'CC', 'VBG'],
['JJ', 'NNS', 'VBP', 'RB', 'JJ', 'JJ', 'NN'],
['JJ', 'NN'],
['JJ', 'NNP', 'JJ', 'NNS']]
太棒了!我沒有想到它在分詞方面。相反,我一直在用集合分割和類似方法來考慮它。讓我在實施這個方面有一個很好的解決方案,我會回過頭來接受解決方案。有一件事:'L'(最後一個間隙數組)在你的僞代碼中稍後會變成'P'。 –