如何从文件中删除非英语单词?

时间:2017-07-01 12:48:23

标签: python python-3.x pandas text-mining

我正在尝试处理包含2列文本和类别的文件。从文本列中,我需要删除非英语单词。我是Python新手,如果有任何关于如何做的建议,我将不胜感激。我的文件有60,000行实例。

我可以在下面讨论这一点,但需要有关如何前进的帮助

2 个答案:

答案 0 :(得分:0)

这段代码可以解决问题。

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)]

答案 1 :(得分:0)

如果要删除非英文字符,例如标点符号,符号或任何其他语言的脚本,可以使用字符串模块的isalpha()方法。

    words=[word.lower() for word in words if word.isalpha()]

要删除无意义的英语单词,您可以继续使用@Infinity建议,但创建一个包含20,000个单词的词典将无法涵盖所有​​场景。

由于此问题是标记文本挖掘,您可以选择与您正在使用的语料库类似的源,查找源中的所有单词,然后继续使用@Infinity方法。