Vik*_*ngh 9 python parallel-processing cpython word2vec
我有这样的文件:
documents = [
"I work on c programing.",
"I work on c coding.",
]
Run Code Online (Sandbox Code Playgroud)
我有同义词文件,如:
synonyms = {
"c programing": "c programing",
"c coding": "c programing"
}
Run Code Online (Sandbox Code Playgroud)
我想替换我编写此代码的所有同义词:
# added code to pre-compile all regex to save compilation time. credits alec_djinn
compiled_dict = {}
for value in synonyms:
compiled_dict[value] = re.compile(r'\b' + re.escape(value) + r'\b')
for doc in documents:
document = doc
for value in compiled_dict:
lowercase = compiled_dict[value]
document = lowercase.sub(synonyms[value], document)
print(document)
Run Code Online (Sandbox Code Playgroud)
输出:
I work on c programing.
I work on c programing.
Run Code Online (Sandbox Code Playgroud)
但由于文档数量为几百万,同义词术语的数量为几十万,因此该代码完成的预计时间约为10天.
有更快的方法吗?
PS:用输出我想训练word2vec模型.
任何帮助是极大的赞赏.我正在考虑编写一些cpython代码并将其放在并行线程中.
wil*_*elm 17
我以前做过像这样的字符串替换工作,也用于在非常大的文本语料库上训练word2vec模型.当要替换的术语数量(您的"同义词术语")非常大时,使用Aho-Corasick算法进行字符串替换而不是循环遍历许多单个字符串替换是有意义的.您可以查看我的fsed实用程序(用Python编写),它可能对您有用.