1
私は次のコードを入力すると:それは、これらの3つのトークンに分割されます tokens = word_tokenize("[email protected]")
電子メールを3つの異なるトークンに分割しないようにnltkパッケージを更新するにはどうすればよいですか?
を:「A」「@」、「b.com」
私が何をしたいのか、としてそれを維持することです単一のトークン「[email protected]」。
私は次のコードを入力すると:それは、これらの3つのトークンに分割されます tokens = word_tokenize("[email protected]")
電子メールを3つの異なるトークンに分割しないようにnltkパッケージを更新するにはどうすればよいですか?
を:「A」「@」、「b.com」
私が何をしたいのか、としてそれを維持することです単一のトークン「[email protected]」。
免責事項:そこにはたくさんの電子メールの正規表現があります。私はこの質問のすべての電子メールフォーマットに一致させようとしているわけではなく、単にの例を示しています。
RegexpTokenizer
(lenzによってmentioned above)との正規表現のアプローチは、動作することができます:
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]
- 単語と空白文字以外の文字が1つ以上(1つ以上のシーケンスに一致すると、その後ろに+
を追加します)の出現。online regex demoを参照してください。
タグの選択肢が示唆するように、可能な解決策は、 'RegexpTokenizer'を使用して、トークンとみなされるべきものを定義することです。これは、パッケージを更新することとは関係ありません。 – lenz