1
我想pos_tag以下文字:NLTK正則表達式的結果錯了pos_tag輸出日期和貨幣
text = """5.1 Basic Wage:
£350.00 per week payable by monthly instalments in arrear
from 18.12.2015 to 30.06.2016
£550.00 per week payable by monthly instalments in arrear
from 01.07.2016 to 30.06.2017
£650.00 per week payable by monthly instalments in arrear
from 01.07.2017 to 30.06.2018
and £25 from 12.07.2016 to 18th December 2016"""
這個問題似乎是日期的一部分要麼標記爲$
和VB
即(18.', '$'), (u'12.2015', 'CD')
或(u' 30.', 'VB'), (u'06.2018', 'CD')
代替(u'18.12.2015', CD)
,而實際貨幣450.00, 650.00
被拾起,因爲只有CD
,我至今對正則表達式是
sentence_re = r'''(?x)(?:(?:[A-Z])(?:.[A-Z])+.?)
| (?:\$?\d+(?:.\d+)?%?)
| (?:\w+(?:-\w+)*)
| (?:...|)(?:[][.,;"\'?():-_`])
'''
toks = nltk.regexp_tokenize(text, sentence_re)
postoks = nltk.tag.pos_tag(toks)
print postoks
對於我的生活,我似乎無法使此任何進展,所以任何幫助,非常感謝。
'toks'的輸出與預期的一樣嗎?因爲我觀察到令牌化需要修復。 –
嘗試[?(?x)(?:(?:[AZ])(?:\。[AZ])+ \。?)|(?:[£$]?\ d +(?:\。\ d + )*%)|(:\ W +(: - \ W +)*)|(:\ {3} | [] [,; \「\'():?_ \' - ]????)。 '](https://regex101.com/r/DsTVhr/1)。我懷疑你錯過了點,這裏的主要解決方法是用'*'替換'?'替換'(?:\。 \ d +)'模式。 –