如何从文件中删除非英语单词?
How do I remove non-English words from a file?
我正在尝试处理一个包含 2 列文本和类别的文件。从文本列中,我需要删除非英语单词。我是 Python 的新手,如果对如何执行此操作有任何建议,我将不胜感激。我的文件有 60,000 行实例。
我可以到达下面的这一点,但需要有关如何前进的帮助
这段代码应该可以解决问题。
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)]
如果要删除非英文字符,例如标点符号、符号或任何其他语言的脚本,可以使用 String 模块的 isalpha()
方法。
words=[word.lower() for word in words if word.isalpha()]
要删除无意义的英文单词,您可以继续@Infinity 建议,但创建一个包含 20,000 个单词的词典将无法涵盖所有场景。
由于这个问题被标记为文本挖掘,你可以select一个类似于你正在使用的语料库的来源,找到来源中的所有单词,然后继续@Infinity 方法。
我正在尝试处理一个包含 2 列文本和类别的文件。从文本列中,我需要删除非英语单词。我是 Python 的新手,如果对如何执行此操作有任何建议,我将不胜感激。我的文件有 60,000 行实例。
我可以到达下面的这一点,但需要有关如何前进的帮助
这段代码应该可以解决问题。
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)]
如果要删除非英文字符,例如标点符号、符号或任何其他语言的脚本,可以使用 String 模块的 isalpha()
方法。
words=[word.lower() for word in words if word.isalpha()]
要删除无意义的英文单词,您可以继续@Infinity 建议,但创建一个包含 20,000 个单词的词典将无法涵盖所有场景。
由于这个问题被标记为文本挖掘,你可以select一个类似于你正在使用的语料库的来源,找到来源中的所有单词,然后继续@Infinity 方法。