-1
我想標記文本,使用POS標記器,然後使用自定義的「模式」(見下文)塊輸出它的輸出。這些是我的安裝導入存儲庫,然後是pos標籤的輸出。Python NLTK和正則表達式
from nltk.chunk import *
from nltk.chunk.util import *
from nltk.chunk.regexp import *
pos = [(u'max', 'NN'), (u'workpiece', 'NN'), (u'diameter', 'NN'), (u'250', 'CD'), (u'mm', 'NN'), (u'threading', 'VBG'), (u'length', 'NN'), (u'800', 'CD'), (u'mm', 'NN'), (u'max', 'NN'), (u'module', 'NN'), (u'5', 'CD'), (u'total', 'NN'), (u'power', 'NN'), (u'requirement', 'NN'), (u'5', 'CD'), (u'kW', 'NNP')]
我試圖調整,我在下面的方法創建的POS分塊:
pattern = r"""
FEAT: {<NN><NN>+}
{<VBG><NN>}
VAL: {<CD><NN|NNP>}
"""
我的電流輸出:
(S
(ATTR max/NN workpiece/NN diameter/NN)
(VAL 250/CD mm/NN)
(ATTR threading/VBG length/NN)
800/CD
(ATTR mm/NN max/NN module/NN)
5/CD
(ATTR total/NN power/NN requirement/NN)
(VAL 5/CD kW/NNP)
我需要的輸出:
(S
(ATTR max/NN workpiece/NN diameter/NN)
(VAL 250/CD mm/NN)
(ATTR threading/VBG length/NN)
(VAL 800/CD mm/NN)
(ATTR max/NN module/NN)
5/CD
(ATTR total/NN power/NN requirement/NN)
(VAL 5/CD kW/NNP)
我該如何定製這個chucki ng模式,使得800(CD)mm(NN)也將被視爲VAL。我認爲我的VAL代碼表示:找到一個標記標記的CD,然後是標記標記NN。我應該採取什麼方法來實現這一目標?
感謝
感謝您的答覆,我編輯我原來的職位 – OAK
嘗試圍繞你的語法/組塊規則的順序轉動(這樣VAL人來過第一)。 nltk解析器對此非常重要,並且不允許使用多個解析樹,因此它將採用第一個匹配。 – Igor