当前位置: 首页 > news >正文

[python] 使用Jieba工具中文分词及文本聚类概念

https://img-blog.csdn.net/20151211021909383

前面讲述了很多关于Python爬取本体Ontology、消息盒InfoBox、虎扑图片等例子,同时讲述了VSM向量空间模型的应用。但是由于InfoBox没有前后文和语义概念,所以效果不是很好,这篇文章主要是爬取百度5A景区摘要信息,再利用Jieba分词工具进行中文分词,最后提出文本聚类算法的一些概念知识。

一. Selenium爬取百度百科摘要

        简单给出Selenium爬取百度百科5A级景区的代码:

[python] view plain copy

  1. # coding=utf-8    
  2. """  
  3. Created on 2015-12-10 @author: Eastmount   
  4. """    
  5.     
  6. import time            
  7. import re            
  8. import os    
  9. import sys  
  10. import codecs  
  11. import shutil  
  12. from selenium import webdriver        
  13. from selenium.webdriver.common.keys import Keys        
  14. import selenium.webdriver.support.ui as ui        
  15. from selenium.webdriver.common.action_chains import ActionChains    
  16.     
  17. #Open PhantomJS    
  18. driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")    
  19. #driver = webdriver.Firefox()    
  20. wait = ui.WebDriverWait(driver,10)  
  21.   
  22. #Get the Content of 5A tourist spots    
  23. def getInfobox(entityName, fileName):    
  24.     try:    
  25.         #create paths and txt files  
  26.         print u'文件名称: ', fileName  
  27.         info = codecs.open(fileName, 'w', 'utf-8')    
  28.   
  29.         #locate input  notice: 1.visit url by unicode 2.write files  
  30.         #Error: Message: Element not found in the cache -  
  31.         #       Perhaps the page has changed since it was looked up  
  32.         #解决方法: 使用Selenium和Phantomjs  
  33.         print u'实体名称: ', entityName.rstrip('\n')   
  34.         driver.get("http://baike.baidu.com/")    
  35.         elem_inp = driver.find_element_by_xpath("//form[@id='searchForm']/input")    
  36.         elem_inp.send_keys(entityName)    
  37.         elem_inp.send_keys(Keys.RETURN)    
  38.         info.write(entityName.rstrip('\n')+'\r\n')  #codecs不支持'\n'换行    
  39.     
  40.         #load content 摘要  
  41.         elem_value = driver.find_elements_by_xpath("//div[@class='lemma-summary']/div")  
  42.         for value in elem_value:  
  43.             print value.text  
  44.             info.writelines(value.text + '\r\n')  
  45.   
  46.         #爬取文本信息  
  47.         #爬取所有段落<div class='para'>的内容 class='para-title'为标题 [省略]  
  48.         time.sleep(2)    
  49.             
  50.     except Exception,e:    #'utf8' codec can't decode byte    
  51.         print "Error: ",e    
  52.     finally:    
  53.         print '\n'    
  54.         info.close()   
  55.     
  56. #Main function    
  57. def main():  
  58.     #By function get information  
  59.     path = "BaiduSpider\\"  
  60.     if os.path.isdir(path):  
  61.         shutil.rmtree(path, True)  
  62.     os.makedirs(path)  
  63.     source = open("Tourist_spots_5A_BD.txt", 'r')  
  64.     num = 1  
  65.     for entityName in source:    
  66.         entityName = unicode(entityName, "utf-8")    
  67.         if u'故宫' in entityName:   #else add a '?'    
  68.             entityName = u'北京故宫'  
  69.         name = "%04d" % num  
  70.         fileName = path + str(name) + ".txt"  
  71.         getInfobox(entityName, fileName)  
  72.         num = num + 1  
  73.     print 'End Read Files!'    
  74.     source.close()    
  75.     driver.close()  
  76.       
  77. if __name__ == '__main__':  
  78.     main()    

        内容如下图所示,共204个国家5A级景点的摘要信息。这里就不再叙述:

https://img-blog.csdn.net/20151210232925012



 

二. Jieba中文分词

        Python中分分词工具很多,包括盘古分词、Yaha分词、Jieba分词等。
        中文分词库:中文分词库 - 开源软件 - OSCHINA - 中文开源技术交流社区
        其中它们的基本用法都相差不大,但是Yaha分词不能处理如“黄琉璃瓦顶”或“圜丘坛”等词,所以使用了结巴分词。

        1.安装及入门介绍
        参考地址:jieba首页、文档和下载 - Python中文分词组件 - OSCHINA - 中文开源技术交流社区
        下载地址:jieba · PyPI
        Python 2.0我推荐使用"pip install jieba"或"easy_install jieba"全自动安装,再通过import jieba来引用(第一次import时需要构建Trie树,需要等待几秒时间)。
        安装时如果出现错误"unknown encoding: cp65001",输入"chcp 936"将编码方式由utf-8变为简体中文gbk。

https://img-blog.csdn.net/20151211001842210


        结巴中文分词涉及到的算法包括:
        (1) 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG);
        (2) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;
        (3) 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。

        结巴中文分词支持的三种分词模式包括:
        (1) 精确模式:试图将句子最精确地切开,适合文本分析;
        (2) 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义问题;
        (3) 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
        同时结巴分词支持繁体分词和自定义字典方法。

 

[python] view plain copy

  1. #encoding=utf-8  
  2. import jieba  
  3.   
  4. #全模式  
  5. text = "我来到北京清华大学"  
  6. seg_list = jieba.cut(text, cut_all=True)  
  7. print u"[全模式]: ", "/ ".join(seg_list)   
  8.   
  9. #精确模式  
  10. seg_list = jieba.cut(text, cut_all=False)  
  11. print u"[精确模式]: ", "/ ".join(seg_list)  
  12.   
  13. #默认是精确模式  
  14. seg_list = jieba.cut(text)  
  15. print u"[默认模式]: ", "/ ".join(seg_list)   
  16.   
  17. #新词识别 “杭研”并没有在词典中,但是也被Viterbi算法识别出来了  
  18. seg_list = jieba.cut("他来到了网易杭研大厦")   
  19. print u"[新词识别]: ", "/ ".join(seg_list)  
  20.   
  21. #搜索引擎模式  
  22. seg_list = jieba.cut_for_search(text)   
  23. print u"[搜索引擎模式]: ", "/ ".join(seg_list)  

        输出如下图所示:

https://img-blog.csdn.net/20151211004304803

        代码中函数简单介绍如下:
        jieba.cut():第一个参数为需要分词的字符串,第二个cut_all控制是否为全模式。
        jieba.cut_for_search():仅一个参数,为分词的字符串,该方法适合用于搜索引擎构造倒排索引的分词,粒度比较细。
        其中待分词的字符串支持gbk\utf-8\unicode格式。返回的结果是一个可迭代的generator,可使用for循环来获取分词后的每个词语,更推荐使用转换为list列表。

        2.添加自定义词典
        由于"国家5A级景区"存在很多旅游相关的专有名词,举个例子:
   [输入文本] 故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等
   [精确模式] 故宫//著名景点/包括//清宫//太和殿///琉璃瓦/
   [ ] 故宫//著名/著名景点/景点/包括//清宫/太和/太和殿///琉璃/琉璃瓦/
        显然,专有名词"乾清宫"、"太和殿"、"黄琉璃瓦"(假设为一个文物)可能因分词而分开,这也是很多分词工具的又一个缺陷。但是Jieba分词支持开发者使用自定定义的词典,以便包含jieba词库里没有的词语。虽然结巴有新词识别能力,但自行添加新词可以保证更高的正确率,尤其是专有名词。
        基本用法:jieba.load_userdict(file_name) #file_name为自定义词典的路径
        词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略,ns为地点名词),用空格隔开。
        强烈推荐一篇词性标注文章,链接如下:
        
http://www.hankcs.com/nlp/part-of-speech-tagging.html
 

[python] view plain copy

  1. #encoding=utf-8  
  2. import jieba  
  3.   
  4. #导入自定义词典  
  5. jieba.load_userdict("dict.txt")  
  6.   
  7. #全模式  
  8. text = "故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等"  
  9. seg_list = jieba.cut(text, cut_all=True)  
  10. print u"[全模式]: ", "/ ".join(seg_list)   
  11.   
  12. #精确模式  
  13. seg_list = jieba.cut(text, cut_all=False)  
  14. print u"[精确模式]: ", "/ ".join(seg_list)  
  15.   
  16. #搜索引擎模式  
  17. seg_list = jieba.cut_for_search(text)   
  18. print u"[搜索引擎模式]: ", "/ ".join(seg_list)  

        输出结果如下所示,其中专有名词连在一起,即"乾清宫"和"黄琉璃瓦"。

https://img-blog.csdn.net/20151211013017417


        3.关键词提取
        在构建VSM向量空间模型过程或者把文本转换成数学形式计算中,你需要运用到关键词提取的技术,这里就再补充该内容,而其他的如词性标注、并行分词、获取词位置和搜索引擎就不再叙述了。
        基本方法:jieba.analyse.extract_tags(sentence, topK) 
        需要先import jieba.analyse,其中sentence为待提取的文本,topK为返回几个TF/IDF权重最大的关键词,默认值为20。

 

[python] view plain copy

  1. #encoding=utf-8  
  2. import jieba  
  3. import jieba.analyse  
  4.   
  5. #导入自定义词典  
  6. jieba.load_userdict("dict.txt")  
  7.   
  8. #精确模式  
  9. text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常精美,午门是紫禁城的正门,午门居中向阳。"  
  10. seg_list = jieba.cut(text, cut_all=False)  
  11. print u"分词结果:"  
  12. print "/".join(seg_list)  
  13.   
  14. #获取关键词  
  15. tags = jieba.analyse.extract_tags(text, topK=3)  
  16. print u"关键词:"  
  17. print " ".join(tags)  

        输出结果如下,其中"午门"出现3次、"乾清宫"出现2次、"著名景点"出现1次,按照顺序输出提取的关键词。如果topK=5,则输出:"午门 乾清宫 著名景点 太和殿 向阳"。

[python] view plain copy

  1. >>>   
  2. 分词结果:  
  3. 故宫/的/著名景点/包括/乾清宫/、/太和殿/和/午门/等/。/其中/乾清宫/非常/精美/,/午门/是/紫禁城/的/正门/,/午门/居中/向阳/。  
  4. 关键词:  
  5. 午门 乾清宫 著名景点  
  6. >>>   


        4.对百度百科获取摘要分词
        从BaiduSpider文件中读取0001.txt~0204.txt文件,分别进行分词处理再保存。

 

[python] view plain copy

  1. #encoding=utf-8  
  2. import sys  
  3. import re  
  4. import codecs  
  5. import os  
  6. import shutil  
  7. import jieba  
  8. import jieba.analyse  
  9.   
  10. #导入自定义词典  
  11. jieba.load_userdict("dict_baidu.txt")  
  12.   
  13. #Read file and cut  
  14. def read_file_cut():  
  15.     #create path  
  16.     path = "BaiduSpider\\"  
  17.     respath = "BaiduSpider_Result\\"  
  18.     if os.path.isdir(respath):  
  19.         shutil.rmtree(respath, True)  
  20.     os.makedirs(respath)  
  21.   
  22.     num = 1  
  23.     while num<=204:  
  24.         name = "%04d" % num   
  25.         fileName = path + str(name) + ".txt"  
  26.         resName = respath + str(name) + ".txt"  
  27.         source = open(fileName, 'r')  
  28.         if os.path.exists(resName):  
  29.             os.remove(resName)  
  30.         result = codecs.open(resName, 'w', 'utf-8')  
  31.         line = source.readline()  
  32.         line = line.rstrip('\n')  
  33.           
  34.         while line!="":  
  35.             line = unicode(line, "utf-8")  
  36.             seglist = jieba.cut(line,cut_all=False)  #精确模式  
  37.             output = ' '.join(list(seglist))         #空格拼接  
  38.             print output  
  39.             result.write(output + '\r\n')  
  40.             line = source.readline()  
  41.         else:  
  42.             print 'End file: ' + str(num)  
  43.             source.close()  
  44.             result.close()  
  45.         num = num + 1  
  46.     else:  
  47.         print 'End All'  
  48.   
  49. #Run function  
  50. if __name__ == '__main__':  
  51.     read_file_cut()  

        运行结果如下图所示:

 


        5.去除停用词
        在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的。[参考百度百科]

 

[python] view plain copy

  1. #encoding=utf-8  
  2. import jieba  
  3.   
  4. #去除停用词  
  5. stopwords = {}.fromkeys(['的', '包括', '等', '是'])  
  6. text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常精美,午门是紫禁城的正门。"  
  7. segs = jieba.cut(text, cut_all=False)  
  8. final = ''  
  9. for seg in segs:  
  10.     seg = seg.encode('utf-8')  
  11.     if seg not in stopwords:  
  12.             final += seg  
  13. print final  
  14. #输出:故宫著名景点乾清宫、太和殿和午门。其中乾清宫非常精美,午门紫禁城正门。  
  15.   
  16. seg_list = jieba.cut(final, cut_all=False)  
  17. print "/ ".join(seg_list)  
  18. #输出:故宫/ 著名景点/ 乾清宫/ 、/ 太和殿/ 和/ 午门/ 。/ 其中/ 乾清宫/ 非常/ 精美/ ,/ 午门/ 紫禁城/ 正门/ 。  


 

三. 基于VSM的文本聚类算法

        这部分主要参考2008年上海交通大学姚清坛等《基于向量空间模型的文本聚类算法》的论文,因为我的实体对齐使用InfoBox存在很多问题,发现对齐中会用到文本内容及聚类算法,所以简单讲述下文章一些知识。

 

        文本聚类的主要依据聚类假设是:同类的文档相似度较大,而非同类文档相似度较小。同时使用无监督学习方法,聚类不需要训练过程以及不需要预先对文档手工标注类别,因此具有较高的灵活性和自动化处理能力。主要分为以下部分:
        (1) 预处理常用方法
        文本信息预处理(词性标注、语义标注),构建统计词典,对文本进行词条切分,完成文本信息的分词过程。
        (2) 文本信息的特征表示
        采用方法包括布尔逻辑型、概率型、混合型和向量空间模型。其中向量空间模型VSM(Vector Space Model)是将文档映射成向量的形式,(T1, T2, ..., Tn)表示文档词条,(W1, W2, ..., Wn)文档词条对应权重。建立文本特征主要用特征项或词条来表示目标文本信息,构造评价函数来表示词条权重,尽最大限度区别不同的文档。
        (3) 文本信息特征缩减
        VSM文档特征向量维数众多。因此,在文本进行聚类之前,应用文本信息特征集进行缩减,针对每个特征词的权重排序,选取最佳特征,包括TF-IDF。推荐向量稀疏表示方法,提升聚类的效果,其中(D1, D2, ..., Dn)表示权重不为0的特征词条。
        (4) 文本聚类
        文本内容表示成数学课分析形势后,接下来就是在此数学基础上进行文本聚类。包括基于概率方法和基于距离方法。其中基于概率是利用贝叶斯概率理论,概率分布方式;基于聚类是特征向量表示文档(文档看成一个点),通过计算点之间的距离,包括层次聚类法和平面划分法。

       后面我可能也会写具体的Python聚类算法,VSM计算相似度我前面已经讲过。同时,他的实验数据是搜狐中心的10个大类,包括汽车、财经、IT、体育等,而我的数据都是旅游,如何进一步聚类划分,如山川、河流、博物馆等等,这是另一个难点。

相关文章:

[python] 使用Jieba工具中文分词及文本聚类概念

前面讲述了很多关于Python爬取本体Ontology、消息盒InfoBox、虎扑图片等例子&#xff0c;同时讲述了VSM向量空间模型的应用。但是由于InfoBox没有前后文和语义概念&#xff0c;所以效果不是很好&#xff0c;这篇文章主要是爬取百度5A景区摘要信息&#xff0c;再利用Jieba分词工…...

常见程序搜索关键字转码

个别搜索类的网站因为用户恶意搜索出现误拦截情况&#xff0c;这类网站本身没有非法信息&#xff0c;只是因为把搜索关键字显示在网页中&#xff08;如下图&#xff09;&#xff0c;可以参考下面方法对输出的关键字进行转码 DEDECMS程序 本文针对Dedecms程序进行搜索转码&…...

细谈商品详情API接口设计

一、引言 随着互联网技术的发展&#xff0c;商品详情信息的展示和交互变得越来越重要。为了提供更好的用户体验&#xff0c;我们需要设计一套高效、稳定且易于扩展的商品详情API接口。本文将详细探讨商品详情API接口的设计&#xff0c;包括接口的通用性、安全性和扩展性等方面…...

Go 1.21新增的内置函数(built-in functions)详解

Go 1.21新增的内置函数分别是 min、max 和 clear&#xff0c;接下来看下这几个函数的用途和使用示例。 在编程过程中&#xff0c;需要知道一组值中的最大或最小值的场景是很常见的&#xff0c;比如排序、统计等场景。之前都需要自己写代码来实现这个功能&#xff0c;现在 Go 1…...

【云原生,k8s】基于Helm管理Kubernetes应用

第四阶段 时 间&#xff1a;2023年8月18日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Helm管理Kubernetes应用 目录 一、Kubernetes部署方式 &#xff08;一&#xff09;minikube &#xff08;二&#xff09;二进制包 &#xff08;三&#xff09;Kubeadm …...

字符设备驱动分布注册

驱动文件&#xff1a; 脑图&#xff1a; 现象&#xff1a;...

在Gazebo中添加悬浮模型后,利用键盘控制其移动方法

前段时间写了文章&#xff0c;通过修改sdf、urdf模型的方法&#xff0c;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…...

Java设计模式 (一) 模板方法设计模式

什么是模板方法设计模式? 模板方法设计模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;并将一些步骤的具体实现延迟到子类中。模板方法模式可以帮助确保在算法的不同部分中保持一致性&#xff0c;同时也允许子类根据需要进行具体实现。 模板方法模式…...

PHP在线客服系统推荐

在当今数字化时代&#xff0c;企业客户服务的重要性不容忽视。为了提供卓越的客户体验&#xff0c;许多企业正在寻找PHP在线客服系统。这种系统不仅可以满足客户的需求&#xff0c;还能提升企业的形象。本文将深入探讨PHP在线客服系统的一些有趣话题。 理解PHP在线客服系统 PHP…...

(三)行为型模式:3、解释器模式(Interpreter Pattern)(C++示例)

目录 1、解释器模式&#xff08;Interpreter Pattern&#xff09;含义 2、解释器模式的UML图学习 3、解释器模式的应用场景 4、解释器模式的优缺点 5、C实现解释器模式的实例 1、解释器模式&#xff08;Interpreter Pattern&#xff09;含义 解释器模式&#xff08;Interp…...

Zookeeper 启动闪退

常见的大概这两种情况 1.找不到zoo.cfg文件 在下载zookeeper后&#xff0c;在 %zookeeper安装目录%/conf 目录下有一个zoo.sample.cfg 文件&#xff0c;把 zoo.sample.cfg 文件改名为 zoo.cfg 再重启zkServer.cmd echo off REM Licensed to the Apache Software Foundation …...

jenkins 安装nodejs 14

参考&#xff1a; jenkins容器安装nodejs-前端问答-PHP中文网...

K8S核心组件etcd详解(上)

1 介绍 https://etcd.io/docs/v3.5/ etcd是一个高可用的分布式键值存储系统&#xff0c;是CoreOS&#xff08;现在隶属于Red Hat&#xff09;公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据&#xff0c;并使用Raft协议实现了分布式一致性。etcd广泛应用…...

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA 在较低容量存储领域&#xff0c;EEPROM是常用的存储介质&#xff0c;可以通过直接或者文件操作方式进行读写。不同容量的EEPROM的地址对应位数不同&#xff0c;在发送字节的格式上有所区别。EEPROM是非快速访问存储&#xf…...

微服务—远程调用(RestTemplate)

在微服务的所有框架中&#xff0c;SpringCloud脱颖而出&#xff0c;它是目前国内使用的最广泛的微服务框架 &#xff08;官网地址&#xff09;&#xff0c;它集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱…...

Fine tune简介

目录 Intro Related work Example .1 重新训练 .2 使用新的数据集进行fine tune .3 修改net结构 References 移学习不是一种算法而是一种机器学习思想,应用到深度学习就是微调(Fine-tune)。通过修改预训练网络模型结构(如修改样本类别输出个数),选择性载入预训练网络…...

centos nginx配置ipv4和ipv6的地址都可以访问同一个网站

标题centos nginx配置ipv4和ipv6的地址都可以访问同一个网站 在 Nginx 中配置使 IPv4 和 IPv6 地址都可以访问同一个网站相对简单。只需要确保 Nginx 配置文件正确地配置了监听 IPv4 和 IPv6 地址的监听器即可。 打开你的 Nginx 配置文件&#xff0c;通常位于 /etc/nginx/nginx…...

高教杯数学建模2020C题总结

&#x1f9e1;1. 前言&#x1f9e1; 跟队友花了三天模拟2020C题&#xff0c;现在整理一下一些数据处理的代码&#xff0c;以及在模拟中没有解决的问题。方便以后回溯笔记。 &#x1f9e1;2. 数据处理&#x1f9e1; 2.1 导入数据&#xff0c;并做相关预处理 import pandas a…...

Swagger

目录 简介 使用方式&#xff1a; 常用注解 简介 使用Swagger你只需要按照他的规范去定义接口及接口相关信息再通过Swagger衍生出来的一系列项目和工具&#xff0c;就可以做到生成各种格式的接口文档&#xff0c;以及在线接口调试页面等等。 官网&#xff1a;https://swagger…...

Android 13像Settings一样获取热点和网络共享

一.背景 由于客户定制的Settings里面需要获取到热点和网络共享状态,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...