python-3.x - NLP 应用程序的多处理错误
问题描述
我正在做一个 NLP 项目。我有一个 1.8 亿字的海量数据集。在开始训练之前,我想纠正单词的拼写。为此,我使用 TextBlob 的拼写正确。因为 TextBlob 无论如何都需要一段时间来处理,所以纠正 1.8 亿个单词的拼写将是一个非常长的时间。所以这是我的方法(代码将在此之后出现):
- 加载语料库
- 使用 nltk 分词器将语料库拆分为句子列表
- 多处理:将函数应用于从步骤 2 生成的列表的每个可迭代项
这是我的代码:
import codecs
import multiprocessing
import nltk
from textblob import TextBlob
from nltk.tokenize import sent_tokenize
class SpellCorrect():
def __init__(self):
pass
def load_data(self, path):
with codecs.open(path, "r", "utf-8") as file:
data = file.read()
return sent_tokenize(data)
def correct_spelling(self, data):
data = TextBlob(data)
return str(data.correct())
def merge_cleaned_corpus(self, result, path):
result = " ".join(temp for temp in result)
with codecs.open(path, "a", "utf-8") as file:
file.write(result)
if __name__ == "__main__":
SpellCorrect = SpellCorrect()
data = SpellCorrect.load_data(path)
correct_spelling = SpellCorrect.correct_spelling
pool = multiprocessing.Pool(processes = multiprocessing.cpu_count())
result = pool.apply_async(correct_spelling, (data, ))
result = result.get()
SpellCorrect.merge_cleaned_corpus(tuple(result), path)
当我运行它时,我收到以下错误:
_pickle.PicklingError: Can't pickle <class '__main__.SpellCorrect'>: it's not the same object as __main__.SpellCorrect
此错误是在我的代码中的行中生成的result = result.get()
从我可能错误的猜测中,我猜测并行处理组件成功完成并且能够将我的清理应用于每个可迭代的句子。但是,我无法检索这些结果。
有人可以告诉我为什么会产生这个错误,我能做些什么来解决它。提前致谢!
解决方案
推荐阅读
- vuejs2 - 当没有为vue-select选择任何内容时如何返回null而不是空字符串
- ssh - 使用 Apache mina 和公钥/私钥对连接到 SSH 服务器
- c# - Web API SQL 身份验证
- javascript - 单击子项后侧边菜单关闭
- c++ - 将 x86 位代码添加到 x64 位的 dll 中
- javascript - 将 https 与 React Native 深度链接
- string - 如何使用 NumericUpDown 按钮重复给定数字的某些行?
- javascript - 我使用 JavaScript 函数生成带有大写小写符号和数字的强密码,但它得到只读错误
- python - Jetson NANO 上的多处理
- python - 将类分配给对象的问题