2016-09-29 20 views
1

當我輸入以下代碼: tokens = word_tokenize("[email protected]")如何更新nltk軟件包,以便它不會將電子郵件分成3個不同的標記?

它被分成這3個記號:「A」,「@」,「b.com」

我想要做的,就是保持它作爲一個令牌'[email protected]'。

+0

正如你自己選擇的標籤所暗示的,一個可能的解決方案是使用'RegexpTokenizer',定義你自己應該被視爲一個令牌。這與更新軟件包無關。 – lenz

回答

1

免責聲明:這裏有很多電子郵件正則表達式。我不是想在這個問題中匹配所有的電子郵件格式,只是舉例

RegexpTokenizermentioned abovelenz)一個正則表達式的方法能夠工作:

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

正則表達式匹配:

  • \[email protected][^\s.]+\.[a-zA-Z]+ - 文本看起來像電子郵件:
    • \S+ - 1更多非空白字符
    • @ - 一個@符號
    • [^\s.]+ - 1個或多個字符不是空格其他與.
    • \. - 字面點
    • [a-zA-Z]+ - 1個或多個ASCII字母
  • | - 或
  • \w+ - 1個或更多字詞(字母,數字或下劃線)
  • | - 或
  • [^\w\s] - 單個字符(在其匹配一個或多個序列後添加+)除字和空白字符以外的字符。

查看online regex demo

相關問題