gpt4 book ai didi

python - 如何更新 nltk 包以便它不会将电子邮件分成 3 个不同的标记?

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

当我输入以下代码时:tokens = word_tokenize("a@b.com")

它被分为这 3 个标记: 'a' 、 '@' 、 'b.com'

我想做的是将其保留为单个 token “a@b.com”。

最佳答案

免责声明:有很多电子邮件正则表达式。我并不是想匹配这个问题中的所有电子邮件格式,只是展示一个示例

使用RegexpTokenizer( mentioned above by lenz )的正则表达式方法可以工作:

from nltk.tokenize.regexp import RegexpTokenizer
line="My email: a@bc.com is not accessible."
pattern = r'\S+@[^\s.]+\.[a-zA-Z]+|\w+|[^\w\s]'
tokeniser=RegexpTokenizer(pattern)
tokeniser.tokenize(line)
# => ['My', 'email', ':', 'a@bc.com', 'is', 'not', 'accessible', '.']

正则表达式匹配:

  • \S+@[^\s.]+\.[a-zA-Z]+ - 文本看起来像电子邮件:
    • \S+ - 1 个或多个非空白字符
    • @ - @ 符号
    • [^\s.]+ - 除空格和 之外的 1 个或多个字符。
    • \. - 文字点
    • [a-zA-Z]+ - 1 个或多个 ASCII 字母
  • | - 或
  • \w+ - 1 个或多个单词字符(字母、数字或下划线)
  • | - 或
  • [^\w\s] - 单个字符(在其后面添加 + 以匹配 1 个或多个 1 的序列),而不是单词和空白字符。

请参阅online regex demo .

关于python - 如何更新 nltk 包以便它不会将电子邮件分成 3 个不同的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777806/

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