玩转字词句魔法:打造超强样本集的数据增强策略,句式变换揭秘同义句生成与回译在数据增强中的创新应用

news2024/11/25 14:57:38

在这里插入图片描述
NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

在这里插入图片描述
专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

前人栽树后人乘凉,本专栏提供资料:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等项目代码整合,省去你大把时间,效率提升。 帮助你快速完成任务落地,以及科研baseline。

玩转字词句魔法:打造超强样本集的数据增强策略,句式变换揭秘同义句生成与回译在数据增强中的创新应用

1. WordSimilarity

这是一个基于同义词词林扩展版的单词相似度计算方法的python实现,参考论文如下:

pip install WordSimilarity

from word_similarity import WordSimilarity2010

ws_tool = WordSimilarity2010()

b_a = "抄袭"
b_b = "克隆"
sim_b = ws_tool.similarity(b_a, b_b)
print(b_a, b_b, '相似度为', sim_b)
#抄袭 克隆 最终的相似度为 0.585642777645155


更多项目参考:

https://github.com/BiLiangLtd/WordSimilarity
https://github.com/ashengtx/CilinSimilarity 实现了三种计算方法。
https://github.com/Xls1994/Cilin
http://www.codepub.cn/2015/08/04/Based-on-the-extended-version-of-synonyms-Cilin-word-similarity-computing/ Java实现

2.OpenHowNet

OpenHowNet API由清华大学自然语言处理实验室(THUNLP)开发,提供方便的义原信息查询、义原树展示、基于义原的词相似度计算等功能。网站体验词语义原在线查询和展示功能。

官网:https://openhownet.thunlp.org/

https://openhownet.thunlp.org/item?id=000000265705

2.1 HowNet简介

HowNet是最典型的义原知识库。义原在语言学中被定义为最小的语义单位,有语言学家认为世界所有语言的所有词语的语义都可以用一个有限的义原集合来表示。董振东和董强先生父子将此思想付诸实践,耗时近30年构建了HowNet(知网),通过预定义的2000多个义原为20多万个由中英文词语所表示的概念进行了标注。

  • HowNet词典
    HowNet核心数据(即HowNet词典,可从OpenHowNet网站下载)包括237,973个概念。每个概念由中英文词语及其词性、情感倾向、例句、义原标注等信息组成。下面是HowNet中一个概念的示例:
NO.=000000026417 	# 概念编号
W_C=不惜 	# 中文词语
G_C=verb 	# 中文词语词性
S_C=PlusFeeling|正面情感 	# 中文词语情感倾向
E_C=~牺牲业余时间,~付出全部精力,~出卖自己的灵魂 	# 中文词语例句
W_E=do not hesitate to 	# 英文词语
G_E=verb 	# 英文词语词性
S_E=PlusFeeling|正面情感 	# 英文词语情感倾向
E_E= 						# 英文词语例句
DEF={willing|愿意} 	# 义原标注
RMK=

2.2 OpenHowNet API

  • 通过 pip 安装(推荐)
pip install OpenHowNet
  • 通过 Github 安装
git clone https://github.com/thunlp/OpenHowNet/
cd OpenHowNet
python setup.py install
  • 运行要求
    • Python>=3.6
    • anytree>=2.4.3
    • tqdm>=4.31.1
    • requests>=2.22.0

核心数据类型

  • HowNetDict:HowNet词典类,封装HowNet核心数据的检索、展示、相似度计算等核心功能。

  • Sense:HowNet中的概念类,封装用于描述概念的中英文词语及其词性、义原标注等信息。

  • Sememe:HowNet中的义原类,封装用于描述义原的中英文词语、义原的出现频率以及义原间关系等信息。

  • 初始化

import OpenHowNet
hownet_dict = OpenHowNet.HowNetDict()

这里如果没有下载义原数据会报错,需要执行 OpenHowNet.download()

2.2.1 获取HowNet中词语对应的概念

默认情况下,api将从HowNet中搜索输入词语(中文或英文)所属的概念,并返回一个Sense实例列表。为了提高效率,可以设置输入词语的语言。如果目标词不属于HowNet中的任何概念,将返回一个空list。

#查找"苹果"所属的所有概念
>>> result_list = hownet_dict.get_sense("苹果")
>>> print("The number of retrievals: ", len(result_list))
The number of retrievals:  8

>>> print("An example of retrievals: ", result_list)
An example of retrievals:  [No.244401|apple|苹果, No.244402|malus pumila|苹果, No.244403|orchard apple tree|苹果, No.244396|apple|苹果, No.244397|apple|苹果, No.244398|IPHONE|苹果, No.244399|apple|苹果, No.244400|iphone|苹果]

通过每个Sense实例,可以得到每个概念的详细信息(包括概念编号,中英文词语、义原标注等):

>>> sense_example = result_list[0]
>>> print("Sense example:", sense_example)
Sense example: No.244401|apple|苹果
>>> print("Sense id: ",sense_example.No)
Sense id:  000000244401
>>> print("English word in the sense: ", sense_example.en_word)
English word in the sense:  apple
>>> print("Chinese word in the sense: ", sense_example.zh_word)
Chinese word in the sense:  苹果
>>> print("HowNet Def of the sense: ", sense_example.Def)
HowNet Def of the sense:  {tree|:{reproduce|生殖:PatientProduct={fruit|水果},agent={~}}}
>>> print("Sememe list of the sense: ", sense_example.get_sememe_list())
Sememe list of the sense:  {fruit|水果, tree|, reproduce|生殖}

你可以通过如下方式展示一个概念的义原标注的可视化形式(即义原树):

>>> sense_example.visualize_sememe_tree()
[sense]No.244401|apple|苹果
└── [None]tree|树
    └── [agent]reproduce|生殖
        └── [PatientProduct]fruit|水果

2.2.2 获取HowNet中的所有词语和义原

工具包提供了获取HowNet中所有概念、词语、义原等信息的api。

#获取所有概念
>>> all_senses = hownet_dict.get_all_sense()
>>> print("The number of all senses: {}".format(len(all_senses)))
The number of all senses: 237974

#获取所有中文词语
>>> zh_word_list = hownet_dict.get_zh_words()
>>> print("Chinese words in HowNet: ",zh_word_list[:30])
Chinese words in HowNet:  ['', '"', '#', '#号标签', '$', '$.J.', '$A.', '$NZ.', '%', "'", '(', ')', '*', '+', ',', '-', '--', '.', '...', '...为止', '...也同样使然', '...以上', '...以内', '...以来', '...何如', '...内', '...出什么问题', '...发生了什么', '...发生故障', '...家里有几口人']

#获取所有英文词语
>>> en_word_list = hownet_dict.get_en_words()
>>> print("English words in HowNet: ",en_word_list[:30])
English words in HowNet:  ['A', 'An', 'Frenchmen', 'Frenchwomen', 'Ottomans', 'a', 'aardwolves', 'abaci', 'abandoned', 'abbreviated', 'abode', 'aboideaux', 'aboiteaux', 'abscissae', 'absorbed', 'acanthi', 'acari', 'accepted', 'acciaccature', 'acclaimed', 'accommodating', 'accompanied', 'accounting', 'accused', 'acetabula', 'acetified', 'aching', 'acicula', 'acini', 'acquired']

#获取所有义原
>>> all_sememes = hownet_dict.get_all_sememes()
>>> print('There are {} sememes in HowNet'.format(len(all_sememes)))
There are 2540 sememes in HowNet

2.2.3 获取词语的义原标注

工具包提供了直接根据输入的目标词语检索其所属概念的义原标注的功能。

默认情况下,工具包将查找该词语所属的Sense列表,并返回每个Sense对应的Sememe列表。

>>> hownet_dict.get_sememes_by_word(word = '苹果', display='list', merge=False, expanded_layer=-1, K=None)
[{'sense': No.244396|apple|苹果,
  'sememes': {PatternValue|样式值, SpeBrand|特定牌子, able|, bring|携带, computer|电脑}},
 {'sense': No.244397|apple|苹果, 
  'sememes': {fruit|水果}},
 {'sense': No.244398|IPHONE|苹果,
  'sememes': {PatternValue|样式值, SpeBrand|特定牌子, able|, bring|携带, communicate|交流, tool|用具}},
 {'sense': No.244399|apple|苹果,
  'sememes': {PatternValue|样式值, SpeBrand|特定牌子, able|, bring|携带, communicate|交流, tool|用具}},
 {'sense': No.244400|iphone|苹果,
  'sememes': {PatternValue|样式值, SpeBrand|特定牌子, able|, bring|携带, communicate|交流, tool|用具}},
 {'sense': No.244401|apple|苹果, 
  'sememes': {fruit|水果, reproduce|生殖, tree|}},
 {'sense': No.244402|malus pumila|苹果,
  'sememes': {fruit|水果, reproduce|生殖, tree|}},
 {'sense': No.244403|orchard apple tree|苹果,
  'sememes': {fruit|水果, reproduce|生殖, tree|}}]

通过设置 display ,除了可以将义原以列表形式(list)展示外,还可以以词典形式(dict)、树节点形式(tree)、可视化形式(visual)等不同形式进行展示。

#获取以词典形式展示的义原集合
>>> hownet_dict.get_sememes_by_word(word='苹果',display='dict')[0]
{'sense': No.244396|apple|苹果, 'sememes': {'role': 'sense', 'name': No.244396|apple|苹果, 'children': [{'role': 'None', 'name': computer|电脑, 'children': [{'role': 'modifier', 'name': PatternValue|样式值, 'children': [{'role': 'CoEvent', 'name': able|, 'children': [{'role': 'scope', 'name': bring|携带, 'children': [{'role': 'patient', 'name': '$'}]}]}]}, {'role': 'patient', 'name': SpeBrand|特定牌子}]}]}}

#获取以树的形式组织的义原(得到义原树的根节点)
>>> d.get_sememes_by_word(word='苹果',display='tree')[0]
{'sense': No.244396|apple|苹果, 'sememes': Node('/No.244396|apple|苹果', role='sense')}

#可视化展示义原树 (通过设置参数K来控制需要打印的义原树的数量)
>>> d.get_sememes_by_word(word='苹果',display='visual',K=2)
Find 8 result(s)
Display #0 sememe tree
[sense]No.244396|apple|苹果
└── [None]computer|电脑
    ├── [modifier]PatternValue|样式值
    │   └── [CoEvent]able|能
    │       └── [scope]bring|携带
    │           └── [patient]$
    └── [patient]SpeBrand|特定牌子

Display #1 sememe tree
[sense]No.244397|apple|苹果
└── [None]fruit|水果

display='list' 时,可以通过设置merge将所有Sense的义原列表合并到同一个列表,以及通过expanded_layer设置每个概念的义原树展开的层数等(expanded_layer默认为-1表示展开所有层)。

下面的例子展示了将苹果所属的所有概念的义原列表进行合并后输出的结果:

>>> hownet_dict.get_sememes_by_word(word = '苹果', display='list', merge=True, expanded_layer=-1, K=None)
{PatternValue|样式值, SpeBrand|特定牌子, able|, bring|携带, communicate|交流, computer|电脑, fruit|水果, reproduce|生殖, tool|用具, tree|}

2.2.4 查询义原之间的关系

你可以输入中文或英文词语来查找与之相关的义原并查找义原之间的关系,同时可以选择将整个三元组输出:

#查找 FormValue|形状值 和 round|圆 这两个义原之间的关系
>>> relations = hownet_dict.get_sememe_relation('FormValue','圆', return_triples=False)
>>> print(relations)
'hyponym'

>>> triples = hownet_dict.get_sememe_relation('FormValue','圆', return_triples=True)
>>> print(triples)
[(FormValue|形状值, 'hyponym', round|)]

2.2.5 检索与输入义原存在某种关系的所有义原

输入的义原可以使用任意语言,但是关系必须为英文小写。同样的,可以选择将整个三元组输出。

#查找与义原 FormValue|形状值 存在 hyponym 关系的所有义原
>>> triples = hownet_dict.get_related_sememes('FormValue', relation = 'hyponym', return_triples=True)
>>> print(triples)
[(FormValue|形状值, 'hyponym', round|), (FormValue|形状值, 'hyponym', unformed|不成形), (AppearanceValue|外观值, 'hyponym', FormValue|形状值), (FormValue|形状值, 'hyponym', angular|), (FormValue|形状值, 'hyponym', square|), (FormValue|形状值, 'hyponym', netlike|), (FormValue|形状值, 'hyponym', formed|成形)]

2.3 高级功能

2.3.1高级功能1:基于义原的词语相似度和同/近义词

实现方法基于以下论文:

An Approach of Hybrid Hierarchical Structure for Word Similarity Computing by HowNet. Jiangming Liu, Jinan Xu, Yujie Zhang. IJCNLP 2013. [pdf]

  • 额外初始化

由于计算相似度需要额外的文件,初始化的开销将比之前的大。

你可以按照如下方式对HowNetDict初始化:

>>> hownet_dict_advanced = OpenHowNet.HowNetDict(init_sim=True)
Initializing OpenHowNet succeeded!
Initializing similarity calculation succeeded!

你也可以在需要使用时再对已经初始化的HowNetDict进行额外的初始化:

>>> hownet_dict.initialize_similarity_calculation()
Initializing similarity calculation succeeded!

2.3.2 获得义原标注完全相同的Sense

你可以获得与指定Sense拥有完全相同义原标注的Sense

>>> s = hownet_dict_advanced.get_sense('苹果')[0]
>>> hownet_dict_advanced.get_sense_synonyns(s)[:10]
[No.110999|pear|山梨, No.111007|hawthorn|山楂, No.111009|haw|山楂树, No.111010|hawthorn|山楂树, No.111268|Chinese hawthorn|山里红, No.122955|Pistacia vera|开心果树, No.122956|pistachio|开心果树, No.122957|pistachio tree|开心果树, No.135467|almond tree|扁桃, No.154699|fig|无花果]
  • 获取输入词语的近义词

工具包将首先确定输入词语所属的Sense,继而为每个Sense分别查找K个义原标注最接近的Sense,最后输出对应的词语。注意需要设置输入词的语言。

同时可以选择设置所需词语的词性、输出词语相似度以及无视Sense将所有词语合并到同一个列表等,具体请查询文档。如果输入词语不在HowNet中,函数将返回一个空list。

#为“苹果”所属的每个Sense找出5个最相近的近义词
>>> hownet_dict_advanced.get_nearest_words('苹果', language='zh',K=5)
{No.244396|apple|苹果: ['IBM', '东芝', '华为', '戴尔', '索尼'],
 No.244397|apple|苹果: ['丑橘', '乌梅', '五敛子', '凤梨', '刺梨'],
 No.244398|IPHONE|苹果: ['OPPO', '华为', '苹果', '智能手机', '彩笔'],
 No.244399|apple|苹果: ['OPPO', '华为', '苹果', '智能手机', '彩笔'],
 No.244400|iphone|苹果: ['OPPO', '华为', '苹果', '智能手机', '彩笔'],
 No.244401|apple|苹果: ['山梨', '山楂', '山楂树', '山里红', '开心果树'],
 No.244402|malus pumila|苹果: ['山梨', '山楂', '山楂树', '山里红', '开心果树'],
 No.244403|orchard apple tree|苹果: ['山梨', '山楂', '山楂树', '山里红', '开心果树']}
#并各个Sense的近义词查找的结果
>>> hownet_dict_advanced.get_nearest_words('苹果', language='zh',K=5, merge=True)
['IBM', '东芝', '华为', '戴尔', '索尼']

2.3.3 计算两个词语的相似度

如果其中的任何一个词不在HowNet中,函数将返回-1。

#计算“苹果”和“梨”基于义原的相似度
>>> word_sim=hownet_dict_advanced.calculate_word_similarity('苹果','梨')
>>> print('The similarity of 苹果 and 梨 is {}.'.format(word_sim))
The similarity of 苹果 andis 1.0.

2.3.4 高级功能 2:BabelNet同义词集词典

本工具包集成了对于BabelNet中部分同义词集(称为BabelNet synset)信息的查询功能。BabelNet是一个多语百科词典,由BabelNet synset组成,每个BabelNet synset包含表达相同意思的各种语言的同义词。下面这篇工作为一些BabelNet synset标注了义原,这里的查询功能基于其标注结果实现。

Towards Building a Multilingual Sememe Knowledge Base: Predicting Sememes for BabelNet Synsets. Fanchao Qi, Liang Chang, Maosong Sun, Sicong Ouyang and Zhiyuan Liu. AAAI-20. [pdf] [code]

  • 额外初始化
    本功能同样需要额外的初始化操作:
>>> hownet_dict.initialize_babelnet_dict()
Initializing BabelNet synset Dict succeeded!
#你也可以在创建HowNetDict实例时初始化
>>> hownet_dict_advanced = HowNetDict(init_babel=True)
Initializing OpenHowNet succeeded!
Initializing BabelNet synset Dict succeeded!
  • BabelNet synset信息查询
    通过以下API可以对BabelNet synset中丰富的信息(中英同义词、定义、图片链接等)进行查询。
>>> syn_list = hownet_dict_advanced.get_synset('黄色')
>>> print("{} results are retrieved and take the first one as an example".format(len(syn_list)))
3 results are retrieved and take the first one as an example

>>> syn_example = syn_list[0]
>>> print("Synset: {}".format(syn_example))
Synset: bn:00113968a|yellow|>>> print("English synonyms: {}".format(syn_example.en_synonyms))
English synonyms: ['yellow', 'yellowish', 'xanthous']

>>> print("Chinese synonyms: {}".format(syn_example.zh_synonyms))
Chinese synonyms: ['黄', '黄色', '淡黄色+的', '黄色+的', '微黄色', '微黄色+的', '黄+的', '淡黄色']

>>> print("English glosses: {}".format(syn_example.en_glosses))
English glosses: ['Of the color intermediate between green and orange in the color spectrum; of something resembling the color of an egg yolk', 'Having the colour of a yolk, a lemon or gold.']

>>> print("Chinese glosses: {}".format(syn_example.zh_glosses))
Chinese glosses: ['像丝瓜花或向日葵花的颜色。']
  • BabelNet synset关系查询
    你还可以查询BabelNet同义词集相关的同义词集。

  • BabelNet synset义原标注查询
    工具包同样提供了利用BabelNet synset义原标注来查询中英文词语义原标注的功能:

>>> print(hownet_dict_advanced.get_sememes_by_word_in_BabelNet('黄色'))
[{'synset': bn:00113968a|yellow|, 'sememes': [yellow|]}, {'synset': bn:00101430a|dirty|淫秽的, 'sememes': [lascivious|, dirty|, despicable|卑劣, BadSocial|坏风气]}, {'synset': bn:00081866n|yellow|黄色, 'sememes': [yellow|]}]

>>> print(hownet_dict_advanced.get_sememes_by_word_in_BabelNet('黄色',merge=True))
[lascivious|, despicable|卑劣, BadSocial|坏风气, dirty|, yellow|]

3. Synonyms

https://github.com/chatopera/Synonyms

Chinese Synonyms for Natural Language Processing and Understanding.

更好的中文近义词:聊天机器人、智能问答工具包。

synonyms可以用于自然语言理解的很多任务:文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等。

synonyms#display(word [, size = 10])
以友好的方式打印近义词,方便调试,display(WORD [, SIZE])调用了 synonyms#nearby 方法。

>>> synonyms.display("飞机")
'飞机'近义词:
  1. 飞机:1.0
  2. 直升机:0.8423391
  3. 客机:0.8393003
  4. 滑翔机:0.7872388
  5. 军用飞机:0.7832081
  6. 水上飞机:0.77857226
  7. 运输机:0.7724742
  8. 航机:0.7664748
  9. 航空器:0.76592904
  10. 民航机:0.74209654

SIZE 是打印词汇表的数量,默认 10。

4. JioNLP 中文 NLP 预处理、解析工具包

官网:https://github.com/dongrixinyu/JioNLP

JioNLP 是一个面向 NLP 开发者的工具包,提供 NLP 任务预处理、解析功能,准确、高效、零使用门槛。请下拉本网页,查阅具体功能信息,并按 Ctrl+F 进行搜索。JioNLP在线版 可快速试用部分功能。关注同名微信公众号 JioNLP 可获取最新的 NLP 资讯,数据资源。

  • 安装 Installation
  • python>=3.6 github 版本略领先于 pip
$ git clone https://github.com/dongrixinyu/JioNLP
$ cd ./JioNLP
$ pip install .
  • pip 安装
$ pip install jionlp

4.2.数据增强(☆)

  • 文本数据增强各方法说明
功能函数描述星级
回译BackTranslation给定一篇文本,采用各大厂云平台的机器翻译接口,
实现数据增强
邻近汉字换位swap_char_position随机交换相近字符的位置,实现数据增强
同音词替换homophone_substitution相同读音词汇替换,实现数据增强
随机增删字符random_add_delete随机在文本中增加、删除某个字符,对语义不造成影响
NER实体替换replace_entity根据实体词典,随机在文本中替换某个实体,对语义不
造成影响,也广泛适用于序列标注、文本分类

新词发现

jio.new_word.new_word_discovery
给定一个文本语料文档,返回其中发现的高可能性成词结果。

>>> import jionlp as jio
>>> input_file = '/path/to/text_file.txt'

# input_file 内的样例文本,即一行一条纯文本即可


>>> new_words_dict = jio.new_word.new_word_discovery(input_file)
>>> print(new_words_dict)
>>> print(jio.new_word.new_word_discovery.__doc__)

# {'浑水': [34, 6.9],
#  '贝壳': [28, 6.7],

  • 其中,input_file 中应当包含纯文本,不同文本段由\n区分。返回的结果是一词典 dict,其中包含了词频和该词的左右信息熵。
  • 新词发现方法依然采用统计词汇的内聚度(PMI点间互信息熵)、以及与边界字的分离度(词汇左右信息熵) 进行统计。两个统计指标均有参数可控。分别为min_mutual_information和min_entropy。此外还有词频参数min_freq,指示在文本语料中,词频若低于该值,则属于罕见词汇,不具有统计意义,也不进行返回。

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PHP】一个邮箱点击验证的完整示例

目录 1.效果展示 2.发送验证码 3.进行验证 以绑定邮箱为例,注册验证的话修改判断逻辑 1.效果展示 2.发送验证码 /*** 发点击验证* 参数 email*/public function sendClick(){$param $this->request->post();// 邮箱email的validate规则验证,略…

酒精壁炉,现代取暖的便携选择

酒精壁炉作为现代室内取暖的一种选择,具有独特的特点和工作原理。酒精壁炉采用酒精作为燃料,为家庭提供舒适的温暖,同时具备一定的安全性和便携性。 酒精壁炉通常由金属或陶瓷制成,内部设有专门的燃烧器,用于燃烧酒精燃…

SpringBoot使用@DS配置 多数据源 【mybatisplus druid datasource mysql】

项目最近需要使用多数据源,不同的mapper分别读取不同的链接,本项目使用了mybatisplus druid 来配置多数据源,基于mysql数据库。 目录 1.引入依赖 ​2.配置文件 application.yaml 3.Mapper中使用DS切换数据源 4.使用DS的注意事项 1.引入依…

用uniapp写一个点击左侧可以滑动的menu

完成后的图片(点击左侧右边或滑动,滑动右边左侧的选中也会变化): 数据js (classifyData): export default[{"name": "女装","foods": [{"name": &q…

ansible(不能交互)

1、定义 基于python开发的一个配置管理和应用部署工具,在自动化运维中异军突起,类似于xshell一键输入的工具,不需要每次都切换主机进行操作,只要有一台ansible的固定主机,就可以实现所有节点的操作。不需要agent客户端…

[足式机器人]Part4 南科大高等机器人控制课 Ch08 Rigid Body Dynamics

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 南科大高等机器人控制课 Ch08 Rigid Body Dynamics 1. Spatial Vecocity1.1 Spatial vs. Conventional Accel1.2 Plueker Coordinate System and…

二叉树的最大深度(LeetCode 104)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:深度优先搜索GolangC 方法二:广度优先搜索GolangC 参考文献 1.问题描述 给定一个二叉树 root ,返回其最大深度。 叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节…

会旋转的树,你见过吗?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

精选暖心的早安问候语图片,送一份温馨问候、送一串真诚祝福!

1、寒天催日短,风浪与云平;大雪随风降,祝福与您行;降温总无情,问候暖身心;短信虽礼轻,礼轻情意重!冬季渐深,温度渐冷,注意身体,健康养生!早上好! ​ 2、问候是明亮的灯塔&#xff0…

第二证券:激发资本市场数智新动能 实现高质量发展

12月15日至16日,深交所与港交所、广期所联合举行主题为“科技引领数智赋能”的2023年大湾区生意所科技大会。 本次大会深化贯彻落实中心经济作业会议精神和中心金融作业会议精神,聚焦工作数字化转型和科技立异前沿趋势,深化粤港澳大湾区协同…

C语言文件权限

前言 提笔不会忘字的人&#xff0c;提键盘却忘了编程语言&#xff0c;差点忘本了&#xff0c;用python&#xff0c;shell等脚本语言忘记C语言怎么用了&#xff0c;研究文件系统简单的文件读写不会写了&#xff0c;记录一下。 简单的文件读写 #include <unistd.h> #inc…

快猫视频模板源码定制开发 苹果CMS 可打包成双端APP

苹果CMS快猫视频网站模板源码&#xff0c;可用于开发双端APP&#xff0c;后台支持自定义参数&#xff0c;包括会员升级页面、视频、演员、专题、收藏和会员系统等完整模块。还可以直接指定某个分类下的视频为免费专区&#xff0c;具备完善的卡密支付体系&#xff0c;无需人工管…

Apipost检测接口工具的基本使用方法

&#x1f440; 今天言简意赅的介绍一款和postman一样好用的后端接口测试工具Apipost 专门用于测试后端接口的工具&#xff0c;可以生成接口使用文档官方下载网站&#xff1a;http://www.apipost.cn 傻瓜式安装—>register->项目->创建项目->APIs->新建目录&…

Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

CTF竞赛密码学题目解析

CTF&#xff08;Capture The Flag&#xff09;竞赛是一个有趣的挑战。密码学是CTF竞赛中的核心元素之一&#xff0c;通常涉及解密、破译密码、理解加密算法等技能。以下是30个题目及答案&#xff0c;新入行的可以看看鸭。 题目及答案 1. Caesar Cipher 描述&#xff1a;给出一…

MinHash-LSH:如何解决医学大模型的大规模数据去重?

MinHash-LSH 最小哈希 局部敏感哈希&#xff1a;如何解决医学大模型的大规模数据去重&#xff1f; 大模型的数据问题MinHash-LSH 最小哈希 局部敏感哈希&#xff1a;大规模数据集去重优化Jaccard相似度&#xff1a;用于比较样本集之间的相似性降维技术 MinhashLSH – 局部敏感…

SCC-Tarjan算法,强连通分量算法,从dfs到Tarjan详解

文章目录 前言定义强连通强连通分量 Tarjan算法原理及实现概念引入搜索树有向边的分类强连通分量的根时间戳追溯值 算法原理从深搜到TarjanTarjan算法流程Tarjan算法代码实现 OJ练习&#xff1a; 前言 强连通分量是图论中的一个重要概念&#xff0c;它在许多领域都有广泛的应用…

Qt之使用QListView加载相册(富文本ToolTip)

一.效果 二.实现 #include "mainwindow.h" #include "ui_mainwindow.h"#include <QStandardItemModel> #include <QFont>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QFont…

SourceTree 免登录跳过初始设置

用于Windows和Mac的免费Git客户端。 Sourcetree简化了如何与Git存储库进行交互&#xff0c;这样您就可以集中精力编写代码。通过Sourcetree的简单Git GUI可视化和管理存储库。 SourceTree 安装之后需要使用账号登陆以授权&#xff0c;以前是可以不登陆的&#xff0c;但是现在是…

基于ssm办公自动化管理系统论文

摘 要 随着计算机应用的普及、成熟&#xff0c;越来越多公司开始采用网上信息管理系统&#xff0c;网上信息管理系统的运行可以有效的提高企业管理效率。因此&#xff0c;为满足企业办公管理方面的需求&#xff0c;开发了办公自动化管理系统。 本文重点阐述了办公自动化管理系…