【发布时间】:2017-05-25 10:38:56
【问题描述】:
我有如下文件:
documents = [
"I work on c programing.",
"I work on c coding.",
]
我有同义词文件,例如:
synonyms = {
"c programing": "c programing",
"c coding": "c programing"
}
我想替换我编写此代码的所有同义词:
# 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)
输出:
I work on c programing.
I work on c programing.
但是由于文档的数量是几百万,同义词的数量是成千上万,所以这段代码完成的预期时间大约是 10 天。
有更快的方法吗?
PS:输出我想训练 word2vec 模型。
非常感谢任何帮助。我正在考虑编写一些 cpython 代码并将其放入并行线程中。
【问题讨论】:
-
skills_mapping[val]指的是什么? -
@AmeyDahale 更正了代码。感谢您指出..
-
val和value不一样。 -
让我们详细说明:像
c++这样的关键字应该放在on单词之后和字符串的末尾吗?如果格式是固定的,我可以提出一些解决方案 -
密切相关:stackoverflow.com/a/48600345/4909087 向下滚动到 unutbu 的答案,详细说明了完全相同的事情。
标签: python parallel-processing word2vec cpython