我有一个关键字列表和另一个较长的字符串(2或3页)。我想找出关键字列表中的关键字。 e、 克
Keywords = [k1, k2, k3 k4, k5, k6 k7 k8]
paragraphs = "This will be 2 to4 page article"
一个简单的方法就是
present_keywords = [x for x in keywords if x in paragraphs]
上述算法的时间复杂度为O(m*n) =~ O(n^2)
另一种方式
我可以创建一堆关键字列表,时间复杂度:O(n log n)
然后从堆中的段落中搜索每个单词,时间复杂度将是O(n)
。你知道吗
Note: The keywords are bi-grams, tri-grams as well so second approach will not work.
实现这一目标的有效方法是什么?你知道吗
许多人没有考虑到这个限制就给出了解决方案。e、 纽约是一个关键词。拆分段落会将纽约和纽约拆分为不同的单词。在上面的注释中也提到了这一点。你知道吗
为了降低时间复杂度,我们可以增加空间复杂度。通过
keywords
并将它们散列到set()中,假设每个关键字都是唯一的(如果不是,重复项将被删除)。你知道吗然后您可以遍历
paragraph
并创建一个、两个或三个单词的短语,检查它们是否存在,并随着这些短语中的任何一个出现在hashedKeywords
中而增加它们的计数。时间复杂度为O(m+n)=~O(n),但空间复杂度从O(1)到O(n)。你知道吗输出:
注意:这是在python3中。如果在python2中希望删除标点符号,请参见this answer。你知道吗
相关问题 更多 >
编程相关推荐