gpt4 book ai didi

python - NLTK 正则表达式导致日期和货币的 pos_tag 输出错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:25 26 4
gpt4 key购买 nike

我正在尝试对以下文本进行 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

在我的一生中,我似乎无法在这方面取得任何进展,因此非常感谢任何帮助。

最佳答案

我建议this regex :

(?x)(?:(?:[A-Z])(?:\.[A-Z])+\.?)
| (?:[£$]?\d+(?:\.\d+)*%?)
| (?:\w+(?:-\w+)*)
| (?:\.{3}|[][.,;\"\'?():_`-])

注释:

  • 字符类之外的所有点似乎都与文字点匹配,因此必须转义
  • 货币符号 char 类扩展为 [£$](您可以在其中添加更多内容)
  • \d+(?:\.\d+)? 变成 \d+(?:\.\d+)* 现在这将匹配像 12.34.56
  • 最后一个 ... 应该匹配点,因此,它会变成 \.{3} 并与标点字符类交替,其中连字符放置在末尾,以免创建范围并匹配文字连字符。

关于python - NLTK 正则表达式导致日期和货币的 pos_tag 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com