在逗号分隔符处拆分句子,但保留值中存在的逗号

问题描述 投票:0回答:1

我遇到了一个问题,我需要拆分一个包含多个句子的句子,必须在逗号分隔符处拆分。面临的问题是,即使字符串也有逗号,不应将其视为分隔符。作为值的逗号是随机出现的,因此也不能使用正则表达式方法。我认为我必须为此使用 NLP 方法。

我尝试了正则表达式和模式匹配,但它无法处理所有情况,因此我认为我将不得不采用 NLP 方法

这是一个输入示例:- '减少手动分类工作,构建基于浏览器的测试应用程序,逐帧实时监控音频和视频,测试评估,测试设计,测试优化,测试报告和测试台创建,提供高级别和低级别关键模块自动化的水平要求、测试分析和用例生成以及 CFR 的范围识别、网络协议测试和使用家庭解决方案和外部第三方工具的安全测试、有效的逃逸缺陷分析策略'

输出:- [减少人工分类工作, 构建基于浏览器的测试应用程序,逐帧实时监控音频和视频, 测试评估、测试设计、测试优化、测试报告和测试台创建, 提供关键模块自动化的高层和低层需求, CFR 的测试分析和用例生成和范围识别, 使用家庭解决方案和外部第三方工具进行网络协议测试和安全测试, 有效的逃逸缺陷分析策略']

nlp spacy named-entity-recognition
1个回答
0
投票

要解决拆分包含多个句子的句子的问题,可以使用称为词性标注的自然语言处理(NLP)技术。该技术可识别句子中不同的词性,可用于区分作为句子边界的逗号和作为句子本身一部分的逗号。

步骤如下:

  1. 首先使用 nltk.word_tokenize() 函数将文本分成单个单词

  2. 使用nltk.pos_tag()函数为每个单词分配词性标签

  3. 创建两个数据结构:一个用于跟踪我们识别的句子的列表,以及一个用于保存我们当前正在解析的句子的单词的缓冲区。

    导入 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']
© www.soinside.com 2019 - 2024. All rights reserved.