在Python Pandas中过滤掉列表中的非英语句子

时间:2018-04-04 07:27:43

标签: python pandas filtering non-english pyenchant

所以有一个excel文件,我通过pandas阅读并将其存储在数据帧'df'中。现在,excel文件包含24列作为“问题”,631行作为“响应/答案”。

所以我将一个这样的问题转换成一个列表,以便我可以对其进行标记并在其上应用更多nlp相关任务。

df_lst = df['Q8 Why do you say so ?'].values.tolist()

现在,这给了我一个包含631个句子的列表,其中一些句子是非英语的。所以我想过滤掉非英语句子,以便最后我留下一个包含的列表只有英文句子。

我有什么:

df_lst = ['The excecutive should be able to understand the customer's problem','Customers should get correct responses to their queries', 'This text is in a random non english language'...]

输出(我想要的):

english_words = ['The excecutive should be able to understand the customer's problem','Customers should get correct responses to their queries', ...]

另外,我读到了一个名为pyenchant的python库应该可以做到这一点,但是它与windows 64bit和python 3不兼容..有没有其他方法可以做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否考虑过利用句子中英语“停用词”的数量?看看nltk package。使用以下代码检查英语停用词:

import nltk
from ntlk.corpus import stopwords
ntlk.download('stopwords') # If you just installed the package
set(stopwords.words('english'))

您可以添加一个新列,指明每个句子中存在的英语停用词的数量。停用词的存在可以用作预测英语。

其他可行的方法是,如果您知道大多数答案都是英文开头的事实,请对单词进行频率排名(可能是数据中的每个问题)。在您的示例中,对于正在研究的问题,“客户”这个词看起来非常一致。因此,您可以设计一个变量,表明答案中存在非常频繁的单词。这也可以作为一个预测指标。不要忘记要么将所有单词都设为小写或大写并且处理复数或's'所以你不要将“客户”,“客户”,“客户”,“客户”,“客户”和“客户”等排列为不同的话。

在对上述变量进行设计之后,您可以设置一个阈值,在该阈值之上,您可以将该句子视为用英语书写,或者您可以在无监督学习方面找到更多花哨的东西。

答案 1 :(得分:0)

还有另一个库(与nltk密切相关),TextBlob, 最初绑定到情感分析, 但您仍然可以将其用于翻译,请参阅此处的文档:https://textblob.readthedocs.io/en/dev/quickstart.html

章节翻译和语言检测

GL