如何避免令牌化中的双引号字符串,站点URL和电子邮件地址

时间:2019-08-22 11:05:24

标签: python nlp

我们如何阻止"pass_word"拆分字符串"https://www.gmail.com""tempemail@mail.com"from nltk import word_tokenize s = 'open "https://www.gmail.com" url. Enter "tempemail@mail.com" in email. Enter "pass_word" in password.' for phrase in re.findall('"([^"]*)"', s): s = s.replace('"{}"'.format(phrase), phrase.replace(' ', '*')) tokens = word_tokenize(s) print(tokens) 等字符串?引号应防止出现这种情况,但事实并非如此。

我尝试使用其他正则表达式选项。

['open', 'https', ':', '//www.gmail.com', 'url', '.', 'Enter', 
 'tempemail', '@', 'mail.com', 'in', 'email', '.', 'Enter', 
 'pass_word', 'in', 'password', '.']

实际回答:

['open', 'https://www.gmail.com', 'url', '.', 'Enter', 
 'tempemail@mail.com', 'in', 'email', '.', 'Enter', 
 'pass_word', 'in', 'password', '.']

预期的响应:

var textString = document.createTextNode(currentLangElement.getAttribute('data-language'));
titleEle.appendChild(textString);

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作: 首先,将文本标记为句子。如果句子中包含特殊字符,请使用str.split()函数将其标记,否则请使用word_tokenize

tokens=[]
for sent in sent_tokenize(s):
if re.match(r'^\w+$', s):
    for token in word_tokenize(sent):
        tokens.append(token)
else:
    for token in sent.split():
        tokens.append(token)
print(tokens)

输出:

['open', '"https://www.gmail.com"', 'url.', 'Enter', '"tempemail@mail.com"', 'in', 'email.', 'Enter', '"pass_word"', 'in', 'password.']

编辑 您可以通过使用句点进一步拆分字符串来标记句点。