python - Python:根据短语长度标记文本
问题描述
我想根据短语长度标记文本。
例如,构建一个函数process_text("Some text to be tokenized please", n = 3)
,其中 n 是短语长度,结果应该是这样的["Some text to","be tokenized please"]
。
我该如何实施?
谢谢!
编辑:
好吧,也许我想出了一些有用的东西
from nltk import ngrams
def process_text(text, n = 1):
text= list(ngrams(text.split(), n))
tokenised=[" ".join(i) for i in text]
return tokenised
process_text("Some text to be tokenized please", n = 3)
解决方案
这是使用列表推导的另一种方式:
def tokenize(text):
words = text.split(" ")
return [' '.join(words[i:i+3]) for i in range(0, len(words), 3)]
print(tokenize("Some text to be tokenized please"))
# ['Some text to', 'be tokenized please']
然而,这并不完美,即
>>> tokenize("Some text to be tokenized please")
['Some text to', 'be tokenized please']
>>> tokenize("Some text to be tokenized please ")
['Some text to', 'be tokenized please', '']
>>> tokenize(" Some text to be tokenized please ")
[' Some text', 'to be tokenized', 'please ']
>>> tokenize(" Some text to be tokenized please ")
[' Some text', ' to be', 'tokenized please ']
>>> tokenize(" Some text to be tokenized please ")
[' Some text', ' to be', ' tokenized', 'please ']
但您可以根据您的用例进行调整。
推荐阅读
- excel - 如何将此 Excel 宏保存为 .xls (Excel 97-2003) 格式,而不是 .xlsx?
- clang - Clang 标志的完整文档在哪里?
- javascript - 如何将此三元运算符表达式转换为 if/else 块?
- c - 对于 C,Visual Studio-2017 如何调试读取文本文件并在该文本文件之后打印输出的代码?
- java - 计算平均值的数组
- module - 将模块变量设为私有
- sql - 返回字符串末尾的数值 - Presto SQL
- javascript - Sequelize 对删除的约束
- php - 当变量未设置为参数时,在 PHP 中是否可以将变量传递给函数?
- nservicebus - Nsb:调用 ReplyToOriginator 的单元测试 Saga 处理程序