Python 文本挖掘代码中的时间复杂性问题
我有3000万篇帖子,600条查询,代表600个品牌。Python 文本挖掘代码中的时间复杂性问题,python,performance,text-mining,Python,Performance,Text Mining,我有3000万篇帖子,600条查询,代表600个品牌。 例如,查询“哈利波特”或“哈利”代表哈利波特品牌, 该职位可以是: Yesterday I went to see harry potter. The movie was great! 我有一个类Post表示Post文本,还包括一些函数,用于处理在Post文本中查找术语(“Harry”,“Harry Potter”)的操作。 另一个类是Query,表示查询,并与Post通信 我运行了超过10万篇文章的代码,花了半个小时 class Pos
例如,查询
“哈利波特”或“哈利”
代表哈利波特品牌,该职位可以是:
Yesterday I went to see harry potter. The movie was great!
我有一个类Post
表示Post文本,还包括一些函数,用于处理在Post文本中查找术语(“Harry”
,“Harry Potter”
)的操作。另一个类是
Query
,表示查询,并与Post
通信我运行了超过10万篇文章的代码,花了半个小时
class Post:
def __init__(self, post):
self._postString = post
self._postString = re.sub(r'\s{2,}', ' ', self._postString)
self._parsedSen = self._postString.split(' ')
self._length = len(self._parsedSen)
def isTermAppear(self, term):
k = None
termArr = term.split(' ')
for i in range(self._length):
if i + len(termArr) <= len(self._parsedSen):
k = i
flag = True
for j in range(len(termArr)):
if not self._parsedSen[k].lower().find(termArr[j].lower()) >= 0:
flag = False
k += 1
if flag:
return True
return False
Post
如何提高效率 将目标单词的小写字母存储在self.\u parsedSen
中,并使用termArr=term.lower()。拆分(“”)
然后使用:
def isTermAppear(self, term):
termArr = term.lower().split(' ')
flag = True
for t in termArr:
flag &= t in self._parsedSen
return flag
你会惊讶的 这个问题可能更适合?您想要ElasticSearch
返回全部(t in self.\u parsedSen for t in termArr)
有什么问题?你的&=
不会短路。@Steve Barnes,据我所知,你的解决方案是“哈利·波特”
,如果Harry
和Potter
出现在帖子中,不一定相邻,那么Istermapper
将返回true。只有当哈利波特
出现在旁边时,这才可以。
def isTermAppear(self, term):
termArr = term.lower().split(' ')
flag = True
for t in termArr:
flag &= t in self._parsedSen
return flag