python - 如何摆脱我的标记化输出中的空字符串?
问题描述
预处理推文后,我得到一个空字符串作为最常见的标记之一。我已经用“”(空格)和“”(空字符串)尝试了 re.sub 函数,但无法摆脱空字符串。
我认为它可能会在连续三个空格时发生。所以我尝试re.sub(r'(?<= ) (?= )'
了,但没有奏效。
我还尝试使用获取空字符串的索引tokens.index('')
并获取输出ValueError: '' is not in list
,但是当从输出中复制粘贴空字符串时,它返回了索引。
有什么想法吗?
#Join all Tweets
tweets_joined = " ".join(all_tweets)
#Safe urls and remove them
no_links = re.sub(r'https://t.co/\w{10}', ' ', tweets_joined)
#Remove emojis
emojis = re.compile("(["
u"\U0001F600-\U0001F64F" # emoticons
u"\U000025B0-\U000025BF" # geometric shapes
u"\U00002190-\U000021FF" # arrows
u"\U000027A0-\U000027AF" # arrows
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
"])", flags= re.UNICODE)
no_emojis = re.sub(emojis, ' ', no_links)
#put together big numbers (german writing)
safe_numbers = re.sub(r'(?<=\d)\.(?=\d)', '', no_emojis)
#remove html tags
no_newlines = re.sub(r'\n', ' ', safe_numbers)
no_amp = re.sub(r'&', ' ', no_newlines)
#remove punctuation
interpunkt = string.punctuation + "„“–»«´’"
interpunkt = interpunkt.replace("#","")
interpunkt = interpunkt.replace("@","")
no_punct_text = no_amp
for punct in interpunkt: # durch Interpunktionszeichen in string.punctuation iterieren
no_punct_text = no_punct_text.replace(punct, ' ') # Satzzeichen entfernen
#remove empty strings (this attempt failed)
no_empty_string = re.sub(r'(?<= ) (?= )', '', no_punct_text)
#casefold
text_lower = no_empty_string.casefold()
#tokenize
tokens = nltk.tokenize.word_tokenize(text_lower)
以下是 `tokens` 输出的一部分:
'#berlin',
'#bundestag',
'#brandner',
'️',
'wer',
'hält',
'sie',
'auf'
解决方案
你的工作流程……很复杂。但有时最简单或最好的标记化正则表达式只会生成空标记以及好东西。而不是跳过箍来避免空令牌,只需通过后处理摆脱它们:
clean_tokens = [ tok for tok in tokens if tok ]
推荐阅读
- javascript - 如何将焦点移动到反应js中的项目?
- html - 表格单选按钮对齐问题
- node.js - Namecheap 共享主机、Express.js 和 app.get() 给出“cannot GET /path”错误
- c# - 如何在 C# 中单击按钮时将列表框中的数字相加
- python - 循环遍历熊猫并编写由值索引的每组行?
- machine-learning - 变分自动编码器中从解码器输入到编码器输出的反向传播
- python - 使用 python asyncio 失败
- sql - 普通连接与使用子查询连接
- obiee - Oracle OBIEE (BI):将不带隐藏列的分析结果导出到 CSV
- git - 有没有理由不能为 Git 的 stash 命令堆叠速记选项?