【发布时间】:2021-12-11 22:32:18
【问题描述】:
BLUF:如何清理大型语料库中存在单词混为一谈的问题(如“quartzbackpa”或“passquarterback”)?
背景: 我正在为我的数据科学学位开展我的 Capstone 项目,该项目需要抓取有关 NFL QB 的体育文章以分析其内容,以试图确定是否存在基于种族的隐性偏见。我已经使用 trafilatura 抓取了 11,000 多篇文章,并将它们组合成两个语料库:白色和非白色。每个都包含大约一半的这些文章。然后,我对语料库进行预处理(词干提取、删除停用词、存储在 CSV 中,每行代表一个句子,每个单元格代表句子中的一个单词)。
当我对语料库运行 FastText 并查找最近的邻居时,我只会得到一个最接近的单词列表,这些单词只不过是带有微小偏差的原始单词。例如:
model.nearest_neighbors('smart')
[('smartidea', 0.36853086948394775), ('vsmart', 0.326141357421875), ('intelligent', 0.3181183338165283), ('smartpo', 0.27458563446998596), ('smartqb', 0.2703150510787964)]
这适用于所有结果;我的语料库中有很多脏数据。问题是:如何应用解决方案?
我尝试过的解决方案:
-
创建了一个函数来测试字典中是否存在单词。如果没有,提示输入单词应该是什么,并将结果存储在代码也检查的自定义字典中。这个解决方案有效,但花费的时间太长(我熬夜 6 个小时来处理 100,000 个字符中的一大块 - 仅白色语料库我还有 114 个字符)。
-
编辑了之前的解决方案,只记录字典中不存在的单词的位置,这样我就可以返回并手动更改它。这也花了很长时间;我将其设置为运行并在一天后返回,却发现完成了 2 个块。
我不需要特定的代码,只需要可以帮助解决此问题的一般流程/包。如果没有,也请告诉我。
【问题讨论】:
标签: python web-scraping data-cleaning corpus fasttext