我正在尝试确定某个术语是否出现在字符串中.
术语之前和之后必须出现空格,并且还允许使用标准后缀.
例:
term: google
string: "I love google!!! "
result: found
term: dog
string: "I love dogs "
result: found
Run Code Online (Sandbox Code Playgroud)
我正在尝试以下代码:
regexPart1 = "\s"
regexPart2 = "(?:s|'s|!+|,|.|;|:|\(|\)|\"|\?+)?\s"
p = re.compile(regexPart1 + term + regexPart2 , re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
并得到错误:
raise error("multiple repeat")
sre_constants.error: multiple repeat
Run Code Online (Sandbox Code Playgroud)
更新
失败的真实代码:
term = 'lg incite" OR author:"http++www.dealitem.com" OR "for sale'
regexPart1 = r"\s"
regexPart2 = r"(?:s|'s|!+|,|.|;|:|\(|\)|\"|\?+)?\s"
p = re.compile(regexPart1 + term + regexPart2 , re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
另一方面,以下term顺利通过(+而不是++)
term = 'lg …Run Code Online (Sandbox Code Playgroud) Word2vec似乎主要是针对原始语料库数据进行培训.然而,词形还原是许多语义相似性任务的标准预处理.我想知道是否有人在训练word2vec之前有使词库语法化的经验,以及这是否是一个有用的预处理步骤.
过去几天我一直在努力更好地理解计算复杂性以及如何改进Python代码.为此,我尝试了不同的函数来计算Fibonacci数,比较如果我进行小的更改,脚本运行的时间.
我正在使用列表计算斐波那契数字,从列表中添加元素-2和-1的总和.
我很困惑地发现,如果我在循环中添加.pop(),删除列表中不需要的元素,我的脚本运行得更快.我不明白为什么会这样.循环中的每一步计算机都会做一件事.所以我未经训练的直觉表明这会增加计算时间.当列表很长时,"查找"列表的最后一个元素会慢得多吗?
这是我的代码:
import time
import numpy as np
def fib_stack1(n):
""" Original function """
assert type(n) is int, 'Expected an integer as input.'
if n < 2:
return n
else:
stack = [0, 1]
for i in range(n-1):
stack.append(stack[-1] + stack[-2])
return stack[-1]
def fib_stack2(n):
""" Modified function """
assert type(n) is int, 'Expected an integer as input.'
if n < 2:
return n
else:
stack = [0, 1]
for i in range(n-1):
stack.append(stack[-1] + stack[-2])
### CHANGE …Run Code Online (Sandbox Code Playgroud)