检测除使用iterrows()之外的文本文档的语言?

时间:2018-03-13 16:53:43

标签: python pandas loops dataframe

我正在解决一个问题,我必须检测任何非英文文档并将其删除。

这里有一些类似问题的问题。即使提出的解决方案大多数工作得很好,我仍然想知道是否有更快的方法来做到这一点。

到目前为止,我的代码是这样的(我使用langdetect这是一个Python包来执行此操作。)

from langdetect import detect

for i, row in df.iterrows():
    review = row['reviewText']
    lang = detect(str(review))
    if lang!='en':
        df.drop(i, inplace=True)

正如我所说,上面的代码运行得很好。

当您拥有一小组数据时,这不会成为一个问题。但是,当您处理数十万个数据项甚至数百万个数据项时,它只是非常缓慢且效率低下。

iterrows()似乎不是解决此类问题的正确方法。还有其他解决方案吗?

至于旁注,我只需要检查英文文档,我不需要知道每个文档的语言是什么。

简单地说,我将删除任何非英文文件。所以我也想知道使用langdetect包是否是最佳方法?

谢谢。

1 个答案:

答案 0 :(得分:3)

似乎我们可以在这里使用申请

df[df.reviewText.apply(lambda x : detect(x))=='en']