我遇到了一个问题,我需要拆分一个包含多个句子的句子,必须在逗号分隔符处拆分。面临的问题是,即使字符串也有逗号,不应将其视为分隔符。作为值的逗号是随机出现的,因此也不能使用正则表达式方法。我认为我必须为此使用 NLP 方法。
我尝试了正则表达式和模式匹配,但它无法处理所有情况,因此我认为我将不得不采用 NLP 方法
这是一个输入示例:- '减少手动分类工作,构建基于浏览器的测试应用程序,逐帧实时监控音频和视频,测试评估,测试设计,测试优化,测试报告和测试台创建,提供高级别和低级别关键模块自动化的水平要求、测试分析和用例生成以及 CFR 的范围识别、网络协议测试和使用家庭解决方案和外部第三方工具的安全测试、有效的逃逸缺陷分析策略'
输出:- [减少人工分类工作, 构建基于浏览器的测试应用程序,逐帧实时监控音频和视频, 测试评估、测试设计、测试优化、测试报告和测试台创建, 提供关键模块自动化的高层和低层需求, CFR 的测试分析和用例生成和范围识别, 使用家庭解决方案和外部第三方工具进行网络协议测试和安全测试, 有效的逃逸缺陷分析策略']
要解决拆分包含多个句子的句子的问题,可以使用称为词性标注的自然语言处理(NLP)技术。该技术可识别句子中不同的词性,可用于区分作为句子边界的逗号和作为句子本身一部分的逗号。
步骤如下:
首先使用 nltk.word_tokenize() 函数将文本分成单个单词
使用nltk.pos_tag()函数为每个单词分配词性标签
创建两个数据结构:一个用于跟踪我们识别的句子的列表,以及一个用于保存我们当前正在解析的句子的单词的缓冲区。
导入 nltk
def split_sentences(文本): words = nltk.word_tokenize(文本)
tagged_words = nltk.pos_tag(words)
sentences = []
buffer = []
for word, tag in tagged_words:
if tag == 'VBZ' or tag == 'VBP' or tag == 'VBG' or tag == 'VBN' or tag == 'VBD':
if buffer:
sentence = ' '.join(buffer)
sentences.append(sentence)
buffer = []
else:
buffer.append(word)
if buffer:
sentence = ' '.join(buffer)
sentences.append(sentence)
return sentences
然后调用函数
text = 'Reduction of manual triaging effort, Built browser based test application, Real-Time Monitoring of Audio and Video frame by frame,Test Assessment, Test Design, Test Optimization, Test Report and Test Bench creation, Providing high-level and low-level requirements for Automation of key modules, Test Analysis and Use-case generation and Scope identification for the CFRs, Network protocols testing and Security testing using in-home solutions and external third party tools, Effective Escape Defect Analysis strategy'
sentences = split_sentences(text)
print(sentences)
输出:
['Reduction of manual triaging effort , Built browser', 'test application , Real-Time Monitoring of Audio and Video frame by frame , Test Assessment , Test Design , Test Optimization , Test Report and Test Bench creation ,', 'high-level and low-level requirements for Automation of key modules , Test Analysis and Use-case generation and Scope identification for the CFRs , Network', 'and Security', 'in-home solutions and external third party tools , Effective Escape Defect Analysis strategy']