[英]How do I remove non-English words from a file?
我正在尝试处理一个包含 2 列文本和类别的文件。 从文本列中,我需要删除非英语单词。 我是 Python 的新手,所以如果有关于如何做到这一点的任何建议,我将不胜感激。 我的文件有 60,000 行实例。
我可以在下面达到这一点,但需要关于如何前进的帮助
如果要删除非英文字符,例如标点符号或任何其他语言的脚本,可以使用 String 模块的isalpha()
方法。
words=[word.lower() for word in words if word.isalpha()]
要删除无意义的英语单词,您可以继续使用 @Infinity 建议,但创建一个包含 20,000 个单词的字典并不能涵盖所有情况。
由于这个问题被标记为文本挖掘,您可以选择一个与您使用的语料库相似的来源,找到来源中的所有单词,然后继续使用@Infinity 方法。
这段代码应该可以解决问题。
import pandas
import requests
import string
# The following link contains a text file with the 20,000
# most frequent words in english, one in each line.
DICTIONARY_URL = 'https://raw.githubusercontent.com/first20hours/' \
'google-10000-english/master/20k.txt'
PATH = r"C:\path\to\file.csv"
FILTER_COLUMN_NAME = 'username'
PRINTABLES_SET = set(string.printable)
def is_english_printable(word):
return PRINTABLES_SET >= set(word)
def prepare_dictionary(url):
return set(requests.get(url).text.splitlines())
DICTIONARY = prepare_dictionary(DICTIONARY_URL)
df = pandas.read_csv(PATH, encoding='ISO-8859-1')
df = df[df[FILTER_COLUMN_NAME].map(is_english_printable) &
df[FILTER_COLUMN_NAME].map(str.lower).isin(DICTIONARY)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.