Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python连接文本中的组合关键字_Python_Data Science_Gensim - Fatal编程技术网

Python连接文本中的组合关键字

Python连接文本中的组合关键字,python,data-science,gensim,Python,Data Science,Gensim,所以,我有一个小写的关键字列表。比方说 keywords = ['machine learning', 'data science', 'artificial intelligence'] 和一个小写文本列表。比方说 texts = [ 'the new machine learning model built by google is revolutionary for the current state of artificial intelligence. it may change

所以,我有一个小写的关键字列表。比方说

keywords = ['machine learning', 'data science', 'artificial intelligence']
和一个小写文本列表。比方说

texts = [
  'the new machine learning model built by google is revolutionary for the current state of artificial intelligence. it may change the way we are thinking', 
  'data science and artificial intelligence are two different fields, although they are interconnected. scientists from harvard are explaining it in a detailed presentation that could be found on our page.'
]
我需要将文本转换为:

[[['the', 'new',
   'machine_learning',
   'model',
   'built',
   'by',
   'google',
   'is',
   'revolutionary',
   'for',
   'the',
   'current',
   'state',
   'of',
   'artificial_intelligence'],
  ['it', 'may', 'change', 'the', 'way', 'we', 'are', 'thinking']],
 [['data_science',
   'and',
   'artificial_intelligence',
   'are',
   'two',
   'different',
   'fields',
   'although',
   'they',
   'are',
   'interconnected'],
  ['scientists',
   'from',
   'harvard',
   'are',
   'explaining',
   'it',
   'in',
   'a',
   'detailed',
   'presentation',
   'that',
   'could',
   'be',
   'found',
   'on',
   'our',
   'page']]]
我现在要做的是检查关键字是否在文本中,并将其替换为带ux的关键字。但这是一个复杂的m*n,当你有700个长文本和2M个关键字时,它的速度真的很慢,就像我的例子一样

我试着使用短语,但我无法用我的关键字建立一个短语


有人能给我推荐一种更优化的方法吗?

这可能不是最好的python方法,但它有3个步骤

keywords=[“机器学习”、“数据科学”、“人工智能”]
文本=[“谷歌建立的新机器学习模型对于人工智能的现状来说是革命性的。它可能会改变我们的思维方式”,“数据科学和人工智能是两个不同的领域,尽管它们相互关联。哈佛大学的科学家们正在一份详细的报告中对此进行解释,可以在我们的页面。“]
#添加下划线
对于idx,枚举中的文本(文本):
对于关键字中的关键字:
重新加载文本=文本[idx]
如果文本中有关键字:
text[idx]=重新加载\u text.replace(关键字,关键字.replace(“,”))
#为遇到的每个“.”拆分文本
对于idx,枚举中的文本(文本):
text[idx]=列表(过滤器(无,text.split(“.”))
印刷品(文本)
#拆分文本以获取每个单词
对于idx,枚举中的文本(文本):
对于idx_s,枚举中的句子(文本):
text[idx][idx_s]=列表(映射(lambda x:re.sub(“[,\!?]”,“”,x),句子.split())#映射以删除所有不需要的字符
印刷品(文本)
输出

[
[
['the'、'new'、'machine_learning'、'model'、'build'、'by'、'google'、'is'、'revolutional'、'for'、'the'、'current'、'state'、'of'、'artificial_intelligence'],
[‘它’、‘可能’、‘改变’、‘方式’、‘我们’、‘正在’、‘思考’]
], 
[
[‘数据科学’、‘人工智能’、‘是’、‘两个’、‘不同’、‘领域’、‘尽管’、‘它们’、‘是’、‘相互关联’],
[‘科学家’、‘来自’、‘哈佛’、‘正在’、‘解释’、‘它’、‘在’、‘a’、‘详细’、‘介绍’、‘那个’、‘可能’、‘是’、‘找到’、‘在’、‘我们的’、‘页面’]
]
]

这可能不是最好的python方法,但它需要3个步骤

keywords=[“机器学习”、“数据科学”、“人工智能”]
文本=[“谷歌建立的新机器学习模型对于人工智能的现状来说是革命性的。它可能会改变我们的思维方式”,“数据科学和人工智能是两个不同的领域,尽管它们相互关联。哈佛大学的科学家们正在一份详细的报告中对此进行解释,可以在我们的页面。“]
#添加下划线
对于idx,枚举中的文本(文本):
对于关键字中的关键字:
重新加载文本=文本[idx]
如果文本中有关键字:
text[idx]=重新加载\u text.replace(关键字,关键字.replace(“,”))
#为遇到的每个“.”拆分文本
对于idx,枚举中的文本(文本):
text[idx]=列表(过滤器(无,text.split(“.”))
印刷品(文本)
#拆分文本以获取每个单词
对于idx,枚举中的文本(文本):
对于idx_s,枚举中的句子(文本):
text[idx][idx_s]=列表(映射(lambda x:re.sub(“[,\!?]”,“”,x),句子.split())#映射以删除所有不需要的字符
印刷品(文本)
输出

[
[
['the'、'new'、'machine_learning'、'model'、'build'、'by'、'google'、'is'、'revolutional'、'for'、'the'、'current'、'state'、'of'、'artificial_intelligence'],
[‘它’、‘可能’、‘改变’、‘方式’、‘我们’、‘正在’、‘思考’]
], 
[
[‘数据科学’、‘人工智能’、‘是’、‘两个’、‘不同’、‘领域’、‘尽管’、‘它们’、‘是’、‘相互关联’],
[‘科学家’、‘来自’、‘哈佛’、‘正在’、‘解释’、‘它’、‘在’、‘a’、‘详细’、‘介绍’、‘那个’、‘可能’、‘是’、‘找到’、‘在’、‘我们的’、‘页面’]
]
]

gensim的
词组
/
词组
类设计用于使用其内部统计派生的记录,记录哪些词对应升级为词组,而不是用户提供的配对。(通过综合分数/阈值,你可能会戳戳和戳戳一个
措辞者
,让他做你想做的事,但这会有点尴尬和笨拙。)

您可以模仿他们的一般方法:(1)操作标记列表而不是原始字符串;(2)学习并记住应该组合的标记对;&(3)在一次过程中执行组合。这应该比在字符串上重复搜索和替换要有效得多——听起来你已经尝试过了,并且发现需要这样做

例如,让我们首先创建一个字典,其中键是应该组合的单词对的元组,值是元组,其中既包括指定的组合标记,也包括第二个仅为空元组的项(稍后将明确原因)

keywords=[“机器学习”、“数据科学”、“人工智能”]
文本=[
“谷歌建立的新机器学习模型对于人工智能的现状来说是革命性的。它可能会改变我们的思维方式。”,
“数据科学和人工智能是两个不同的领域,尽管它们相互关联。哈佛大学的科学家们正在我们的网页上详细介绍这一点。”
]
组合_dict={tuple(kwsplit):(''连接(kwsplit),())
用于kwsplit in[kwstr.split()用于kwstr in关键字]}
组合词
在该步骤之后,
组合是:

{('machine','learning'):('machine_learning',()),
(‘数据’、‘科学’):(‘数据’、()),
(‘人工’,‘智能’:(‘人工智能’,())}
现在,我们
tokenized_texts = [text.split() for text in texts]
retokenized_texts = [list(combining_generator(tokens, combinations_dict)) for tokens in tokenized_texts]
retokenized_texts