【问题标题】:is there any faster way to replace words to their roots (which are all in dictionary)有没有更快的方法将单词替换为词根(都在字典中)
【发布时间】:2020-01-17 07:28:53
【问题描述】:

我尝试快速将单词改成词根,我找到了一种方法但是它很慢,zargan是词根和单词的字典

for a in range(1,500): 
    for j in data.txt[a].split():
         pattern = r'\b'+j+r'\b' 
         data.TXT[a] = re.sub(pattern,str(zargan.get(j,j)),data.TXT[a]) 

我有数千个文本行,并尝试使其比上面更快

【问题讨论】:

    标签: python multiprocessing python-multiprocessing


    【解决方案1】:

    匹配每个单词并使用替换函数查找其替换:

    pattern = r'\w*' 
    data.TXT[a] = re.sub(pattern, lambda m: zargan.get(m.group(0), m.group(0))), data.TXT[a])
    

    一个例子是

    >>> import re
    >>> x = "This is an example"
    >>> zargan = {'This':'Not', 'is':'here', 'an':'again', 'example':'tomorrow'}
    >>> pattern = r'\w*' 
    >>> re.findall(pattern, x)
    ['This', '', 'is', '', 'an', '', 'example', '']
    >>> y = re.sub(pattern, lambda m: zargan.get(m.group(0), m.group(0)), x)
    >>> y
    'Not here again tomorrow'
    

    这要快得多,因为它只遍历字符串一次。

    还有Regex to split words in Python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 2020-04-16
      • 1970-01-01
      • 2019-01-28
      • 2021-07-30
      • 1970-01-01
      • 2013-11-29
      • 2014-04-29
      相关资源
      最近更新 更多