我正在解决一个问题,我必须检测任何非英文文档并将其删除。
这里有一些类似问题的问题。即使提出的解决方案大多数工作得很好,我仍然想知道是否有更快的方法来做到这一点。
到目前为止,我的代码是这样的(我使用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
包是否是最佳方法?
谢谢。
答案 0 :(得分:3)
似乎我们可以在这里使用申请
df[df.reviewText.apply(lambda x : detect(x))=='en']