1
當我輸入以下代碼: tokens = word_tokenize("[email protected]")
如何更新nltk軟件包,以便它不會將電子郵件分成3個不同的標記?
它被分成這3個記號:「A」,「@」,「b.com」
我想要做的,就是保持它作爲一個令牌'[email protected]'。
當我輸入以下代碼: tokens = word_tokenize("[email protected]")
如何更新nltk軟件包,以便它不會將電子郵件分成3個不同的標記?
它被分成這3個記號:「A」,「@」,「b.com」
我想要做的,就是保持它作爲一個令牌'[email protected]'。
免責聲明:這裏有很多電子郵件正則表達式。我不是想在這個問題中匹配所有的電子郵件格式,只是舉例。
與RegexpTokenizer
(mentioned above由lenz)一個正則表達式的方法能夠工作:
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]
- 單個字符(在其匹配一個或多個序列後添加+
)除字和空白字符以外的字符。
正如你自己選擇的標籤所暗示的,一個可能的解決方案是使用'RegexpTokenizer',定義你自己應該被視爲一個令牌。這與更新軟件包無關。 – lenz