python - 获取句子中 n-gram 单词的位置
问题描述
在 python 中,我想得到一个单词在句子中的位置。匹配的字符串可以是几个单词。
sentence = "Bloomberg announced today that Gordian Capital will implement the solution to help its clients pursue new fund opportunities faster."
search_str = "Bloomberg"
预期输出:
0
要匹配的字符串可以由多个单词组成。在这种情况下,我想获得开始的位置。
search_str = "Gordian Capital"
预期输出:
4
search_str 可以是特殊字符和数字的组合,例如$5.1 billion
. 我尝试过这样的事情,但它将原始句子分成单词,我不知道如何处理 n-gram 案例。
result = [i+1 for i,w in enumerate(sentence.split()) if w == search_str]
任何解决方案将不胜感激。谢谢
解决方案
- 使用search_str拆分句子
结果 = sentence.split(search_str)
- 取结果的第一个元素并用空格分割
结果 = 结果[0].split(' ')
看起来已经完成了,只需要计算结果列表中的元素
len(结果)
但有时,可能会出现一个空元素。
为避免这种情况,必须过滤列表
result = [elem for elem in filter(lambda x: x!="", result)]
打印(长度(结果))
所有这些你都可以写在一行中:
result = len([elem for elem in filter(lambda x: x != "", sentence.split(search_str)[0].split(" ")) ])
推荐阅读
- linux - 如何在 Linux 中模拟远程网络设备?
- android - Kotlin 导航抽屉活动路由参数
- xamarin - Macincloud 上的 Xamarin.iOS 开发和自动预配设置
- node.js - 强制 node.js socket.io 2.4 监听 127.0.0.1
- calculated-columns - 如何将排名函数嵌入到 Spotfire 中计算列的 AllPrevious 函数中
- python - 尝试在 Python Clifford Algebra 包中使用 sin() 方法
- javascript - 使用 javascript 上传、调整大小并将图像发送到服务器
- tensorflow - 在 4 维(4D 张量)的输入上使用 MaxPool1D?
- c - C程序将二进制小数转换为十进制
- mdx - 如何在 MDX 中获得不同年份级别的值?