NLP 自然语言处理实战

【自然语言处理(NLP)实战】LSTM网络实现中文文本情感分析(手把手与教学超详细) 在当今数字化时代,人们在社交媒体、评论平台以及各类在线交流中产生了海量的文本数据。这些数据蕴含着丰富的情感信息,从而成为了深入理解用户态度、市场趋势,甚至社会情绪的宝贵资源。自然语言处理(NLP)的发展为我们提供了强大的工具,使得对文本情感进行分析成为可能。在这个领域中,长短时记忆网络(LSTM)凭借其能够捕捉文本序列中长距离依赖关系的能力,成为了情感分析任务中的一项重要技术。通过详细的步骤和示例代码,深入了解如何处理中文文本数据、构建LSTM模型、进行训练和评估。 阅读详情
AI摘要

本文精讲自然语言处理(NLP)原理与实践,涵盖分词、词向量、语义分析等关键技术,介绍Jieba分词、Word2Vec、GloVe等工具应用。

前言

自然语言处理 ( Natural Language Processing, NLP) 是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,用于分析理解机器与人之间的交互,常用的领域有:实体识别、文本纠错、情感分析、文本分类、关键词提取、自动摘要提取等方面。
本文将从分词、词频、词向量等基础领域开始讲解自然语言处理的原理,讲解 One-Hot、TF-IDF、PageRank 等算法及 LDA、LDiA、LSA 等语义分析的原理。
介绍 Word2vec、GloVe 等常用词嵌入及 NLTK、Jieba 等分词工具的应用。

目录

一、自然语言处理的概念

二、分词器的原理及应用

 三、词向量

四、文本相似度分析

五、通过主题转换进行语义分析

六、词嵌入的应用

一、自然语言处理的概念

1.1 自然语言处理的起源

语言是人类社会发展过程的产物,是最能体现人类智慧和文明的证明,也是人类与动物最大的区别。它是一种人与人交流的载体,像计算机网络一样,我们使用语言相互传递知识。在人类历史的几千年,语言不断地繁衍发展。
在计算机兴趣的近几十年,科学界正在试图不断努力,把人类的语言演变成分析数据特征的依据。在1970年,有两位美国人 Richard Bandler 和 John Grinder 因不满于传统心理学派的治疗过程冗长,及其效果常反复不定,而集合各家所长以及他们独特的创见,在美国加州大学内(NLP的发源地)利用课余时间开始研究。经过三年多的实验与练习,终于逐渐形成NLP神经语法程式学的基础架构。
随着近年来人工智能的崛起,自然语言处理(NLP)更成为一种专业分析人类语言智能工具,被应用到了多个层面:

(1)机器翻译

机器翻译是利用计算机将某一种语言文本自动翻译成另一种语言文本的方法,它基于语言规则,利用统计的统计原理进度混合计算,得出最终结果。最常见于百度翻译、金山 iciba 翻译、有道翻译、google 翻译等。

(2)自动问答

自动问答通过计算机对人提出的问题的理解,利用自动推理等手段,在有关知识资源中自动求解答案并做出相应的回答。它利用语词提取、关键字分析、摘要分析等方式提取问题的核心主干,然后利用 NLP 分析数据选择出最合适的答案。常见的例子有在线问答 ask.com、百度知道、yahoo 回答等。

(3)语音处理

语言处理(speech processing)可以把将输入语音信号自动转换成书面文字或计算机命令,然后对任务进行操作处理。常见的应用场景有汽车的语言识别、餐厅智能点餐、机场火车站的智能预订航班、智能机器人等。

(4)情感分析
从大量文档中检索出用户的情感方向,对商品评价、服务评价等的满意进行分析,对用户进行商品服务推荐。在京东、淘宝等各大的购物平台很常用。

1.2 自然语言处理的阶段

自然语言实现一般都通过以下几个阶段:文本读取、分词、清洗、标准化、特征提取、建模。首先通过文本、新闻信息、网络爬虫等渠道获取大量的文字信息。然后利用分词工具对文本进行处理,把语句分成若干个常用的单词、短语,由于各国的语言特征有所区别,所以NLP也会有不同的库支撑。对分好的词库进行筛选,排除掉无用的符号、停用词等。再对词库进行标准化处理,比如英文单词的大小写、过去式、进行式等都需要进行标准化转换。然后进行特征提取,利用 tf-idf、word2vec 等工具包把数据转换成词向量。最后建模,利用机器学习、深度学习等成熟框架进行计算。

下面将对这几个处理流程进行逐一介绍。

 

二、分词器的原理及应用

2.1 分词器的基本原理

在自然语言处理的过程中,把切分文件是流水线的第一步,它能够把文本拆分为更小的文本块或词语片段多块信息,每块信息都可以被看成是一个元素,这此元素出现的频率可以直接被看作为文本的向量。
最常见的方法就是使用 split 方法。

data='NLP stands for Natural Language Processing.'

data.split()

结果 ['NLP', 'stands', 'for', 'Natural', 'Language', 'Processing.']

你可能已经看到,直接对语句进行拆分可以会把标点符号 ‘ . ’ 也带进数组。还有一些无用的操作符 ‘. ?!’ 等,最后势必会影响输出的结果。想要实现这类最简单的数据清洗,可以使用正则表达式来解决。

data='NLP is the study of excellent communication–both with yourself, and with others.'

data=re.split(r'[-\s.?,!]',data)

当想去除一些无用的停用词(例如 'a,A' )、对词库进行标准化处理(例如词干还原,把进行式 building 转化成 build,把过去式 began 转化为 begin) 还有大小写转换时,可以使用成熟的库来完成。

多国的语言都有差异,所以分词器的处理方式也有区别,下面将介绍英语单词与中文词汇比较常用的分词器 NLTK 和  Jieba 。

2.2 NLTK 库基础功能介绍

NLTK 使用 Python 程序编写,它提供了一套用于分类,标记化,词干化,标记,解析和语义推理的文本处理库,相关的模块如下。

2.2.1 分句  SentencesSegment

例如有一段文本里面包含三个句子,希望把它分成一个一个的句子。此时可以使用NLTK中的 punktsentencesegmenter。

1 sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
2 paragraph = "The first time I heard that song was in Hawaii on radio. ”+
3             "I was just a kid, and loved it very much! What a fantastic song!"
4 sentences = sent_tokenizer.tokenize(paragraph)
5 print(sentences)

运行结果

['The first time I heard that song was in Hawaii on radio.',
'I was just a kid, and loved it very much!',
'What a fantastic song!']

2.2.2 分词  WordPunctTokenizer

1 from nltk.tokenize import WordPunctTokenizer
2 sentence = "Are you old enough to remember Michael Jackson attending ”+
3             “the Grammys with Brooke Shields and Webster sat on his lap during the show?"
4 words = WordPunctTokenizer().tokenize(sentence) 
5 print(words)

运行结果

['Are', 'you', 'old', 'enough', 'to', 'remember', 'Michael', 'Jackson', 'attending',
'the', 'Grammys', 'with', 'Brooke', 'Shields', 'and', 'Webster', 'sat', 'on', 'his',
'lap', 'during', 'the', 'show', '?']

2.2.3 正则表达式 RegexpTokenizer

最简单的方法去掉一些从文档中存在的 \n \t 等符号

1 from nltk.tokenize import RegexpTokenizer
2 sentence='Thomas Jefferson began \n building \t Monticello at the age of 26.'
3 tokenizer=RegexpTokenizer(r'\w+|$[0-9.]+|\S+')
4 print(tokenizer.tokenize(sentence))

运行结果

['Thomas', 'Jefferson', 'began', 'building', 'Monticello', 'at', 'the', 'age', 'of', '26', '.']

2.2.4   分词 TreebankWordTokenizer

TreebankWordTokenizer 拥有比 WordPunctTokenizer  更强大的分词功能,它可以把 don't 等缩写词分为[ "do" , " n't " ] 

1 from nltk.tokenize import TreebankWordTokenizer
2 sentence="Sorry! I don't know."
3 tokenizer=TreebankWordTokenizer()
4 print(tokenizer.tokenize(sentence))

运行结果

['Sorry', '!', 'I', 'do', "n't", 'know', '.']

2.2.5 词汇统一化

2.2.5.1 转换大小写

词汇统一化最常用的就是把大小进行统一化处理,因为很多搜索工具包都会把大小写的词汇例如 City 和 city 视为不同的两个词,所以在处理词汇时需要进行大小写转换。当中最简单直接的方法就是直接使用 str.lower() 方法。 

2.2.5.2 词干还原

当单词中存在复数,过去式,进行式的时候,其词干其实是一样的,例如 gave  , giving 词干都是 give 。相同的词干其实当中的意思是很接近的,通过词干还原可以压缩单词的数据,减少系统的消耗。NLTK 中提供了 3 个常用的词干还原工具:porter、lancaster、snowball ,其使用方法相类似,下面用 porter 作为例子。可以 playing boys grounded 都被完美地还原,但对 this table 等单词也会产生歧义,这是因为被原后的单词不一定合法的单词。

1 from nltk.stem import porter as pt
2 
3 words = [ 'wolves', 'playing','boys','this', 'dog', 'the',
4             'beaches', 'grounded','envision','table', 'probably']
5 stemmer=pt.PorterStemmer()
6 for word in words:
7      pt_stem = stemmer.stem(word)
8      print(pt_stem)

运行结果

2.2.5.3 词形并归

想要对相同语义词根的不同拼写形式都做出统一回复的话,那么词形归并工具就很有用,它会减少必须要回复的词的数目,即语言模型的维度。例如可以 good、goodness、better 等都归属于同一处理方式。通过wordnet.lemmatize(word,pos) 方法可指定词性,与常用的英语单词类似,n 为名词 v为动词 a为形容词等等。指定词性后还可以通过posterStemmer.stem() 还原词干。

1 stemmer=PorterStemmer()
2 wordnet=WordNetLemmatizer()
3 word1=wordnet.lemmatize('boys',pos='n')
4 print(word1)
5 
6 word2=wordnet.lemmatize('goodness',pos='a')
7 word2=stemmer.stem(word2)
8 print(word2)                

运行结果

2.2.6 停用词

在词库中往往会存在部分停用词,使用 nltk.corpus.stopwords 可以找到 NLTK 中包含的停用词

1 stopword=stopwords.raw('english').replace('\n',' ')
2 print(stopword)

运行结果

通过对比可以对文件中的停用词进行过滤

1 words = [ 'the', 'playing','boys','this', 'dog', 'a',]
2 stopword=stopwords.raw('english').replace('\n',' ')
3 words=[word for word in words if word not in stopword]
4 print(words)

运行结果

['playing', 'boys', 'dog']

2.2.3 把词汇扩展到 n-gram 

上面例子中基本使用单个词作用分词的方式,然而很多短语例如:ice cream,make sense,look through 等都会多个单词组合使用,相同的单词在不同的短语中会有不同的意思。因此,分词也需要有 n-gram 的能力。针对这个问题 NTLK提供了 ngrams 函数,它可以按实现 2-gram、3-gram等多类型的元素划分。

1 sentence='Build the way that works best for you '+\
2                'with support for all your go-to integrations '+\
3                'including Slack Jira and more.'
4 words=sentence.split()
5 print(list(ngrams(words,2)))

运行结果

2.3 Jieba 库基础功能介绍

NLTK 库有着强大的分词功能,然而它并不支中文,中文无论从语法、格式、结构上都有很大的差别,下面介绍一个常用的中文库 Jieba 的基础功能。

2.3.1 分词 jieba.cut 

jieba.cut 是最常用的分词方法,返回值为 generator。jieba.lcut 与 jieba.cut 类似,区别在于 jieba.lcut 直接返回 list。在数据量比较大时,jieba.cut 会更节省内存。

1 def cut(self, sentence, cut_all=False, HMM=True,             
2              use_paddle=False):        
  • sentence 可为 unicode 、 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8。
  • 当 cut_all 返回 bool,默认为 False。当 True 则返回全分割模式,为 False 时返回精准分割模式。
  • HMM 返回 bool,默认为 True,用于控制是否使用 HMM 隐马尔可夫模型。
  • use_paddle 返回 bool,  默认为 False, 用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词,同时支持词性标注。

使用例子

1 sentence='嫦娥四号着陆器地形地貌相机对玉兔二号巡视器成像'
2 word1=jieba.cut(sentence,False)
3 print(list(word1))
4 word2=jieba.cut(sentence,True)
5 print(list(word2))

运行结果

 2.3.2 搜索分词 jieba.cut_for_search

jieba.cut_for_search 与 jieba.cut 精确模式类似,只是在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词,返回值为 generator。jieba.lcut_for_search 与 jieba.cut_for_search 类似,但返回值为 list。

1 def cut_for_search(self,
2       sentence: Any,
3       HMM: bool = True) -> Generator[str, Any, None]
  • sentence 可为 unicode 、 UTF-8 字符串、GBK 字符串。
  • HMM 返回 bool,默认为 True,用于控制是否使用 HMM 隐马尔可夫模型。

 使用例子

1 word1=jieba.cut_for_search('尼康Z7II是去年底全新升级的一款全画幅微单相机',False)
2 print(list(word1))
3 word2=jieba.cut_for_search('尼康Z7II是去年底全新升级的一款全画幅微单相机',True)
4 print(list(word2))

运行结果

 2.2.3 载入新词  jieba.load_userdict 

通过此方法可以预先载入自定义的用词,令分词更精准。文本中一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

例如:设定 word.txt 文本

阿里云   1    n
云计算   1    n

1 word1=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
2 print(list(word1))
3 jieba.load_userdict('C://Users/Leslie/Desktop/word.txt')
4 word2=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
5 print(list(word2))

运行结果

 2.2.4  动态调节词典

通过 jieba.add_word 和 jieba.del_word 这两个方法也可以动态地调节词典

1 def add_word(self, word, freq=None, tag=None):

 jieba.add_word 可以把自定义词加入词典,当中 freq 为词频,tag 为词性。

1 def del_word(self, word):

相反,通过 jieba.del_word 可以动态删除加载的自定义词

1 word1=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
2 print(list(word1))
3 jieba.add_word('阿里云')
4 jieba.add_word('云计算')
5 word2=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
6 print(list(word2))
7 jieba.del_word('阿里云')
8 word3=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
9 print(list(word3))

运行结果

 2.2.5 词节词频 jieba.suggest_freq

此方法可调节单个词语的词频,使其能(或不能)被分出来。注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。

1 def suggest_freq(self, segment, tune=False):

下面的例子就是把 “阿里云” 这个词拆分的过程

word1=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司')
print(list(word1))
jieba.suggest_freq('阿里云',True)
word2=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司',False,False)
print(list(word2))
jieba.suggest_freq(('阿里','云'),True)
word3=jieba.cut('阿里云是全球领先的云计算及人工智能科技公司',False,False)
print(list(word3))

运行结果

 2.2.6 标注词性  jieba.posseg

通过 posseg.cut 可以查看标注词性,除此以外还可以 jieba.posseg.POSTokenizer 新建自定义分词器

1 words=jieba.posseg.cut('阿里云是全球领先的云计算及人工智能科技公司')
2 for word,flag in words:
3      print(word,flag)

运行结果

2.2.7 使用 jieba 计算词频

下面例子介绍一下如何使用 jieba 计算一篇文章的词频,首先读取文章内容,进行去标点处理,然后动态加入常用词,使用 jieba.lcut 方法进行分词。最后读取停用词,把文章的分词集合进行过滤,对每个词的词频进行计算。

 1 def readFile():
 2     # 读取文件
 3     file=open('C://Users/Leslie/Desktop/word.txt','r',102400,'utf8').read()
 4     # 去标点
 5     text=re.sub('[·。,\’!\"\#$%&\'()#!()*+,-./:;<=>?\@,:?¥★、….>【】[]《》?\“\”\‘\’\[\\]^_`{|}~]+'
 6                 ,'',file)
 7     # 加入常用词
 8     jieba.add_word('云计算')
 9     ......
10     # 利用 Jieba 分词
11     words=jieba.lcut(text)
12     print('总词数:{0}'.format(len(words)))
13     return words
14 
15 def stopWord():
16     # 读取停用词
17     stopword=[line.strip() for line in open('C://Users/Leslie/Desktop/stopword.txt','r',1024,'utf8')
18              .readlines()]
19     return stopword
20 
21 def wordFrequency():
22     # 获取文章的词
23     fileWords=readFile()
24     # 获取停用词
25     stopWords=stopWord()
26     words={}
27     # 计算词频
28     for word in fileWords:
29         if word not in stopWords:
30             if word not in words:
31                 words[word]=1
32             else:
33                 words[word]+=1
34     print('单词数: {0}'.format(len(words)))
35     return words
36 
37 if __name__=='__main__':
38     words=wordFrequency()
39     for item in words.items():
40         print(item)

运行结果

 三、词向量

完成分词的工作后,在进行运算前,先要对数据进行向量化,常用的词向量有 one-hot 独热向量、 tf-idf 向量和 embedding 词嵌入等,下面将进一步介绍。

3.1 one-hot 独热向量

one-hot 独热向量是比较容易理解的一种词向量,它是把词汇表中的词的数量与词位置都进行记录,每个语句中所有信息都没有丢失,这也是 one-

常见的15个:自然语言处理(NLP)实战项目 常见的15个:自然语言处理(NLP)实战项目,这些项目不仅可以帮助你深入理解NLP的各个方面,还可以通过实际应用提升你的编程和数据处理能力。每个项目都可以根据具体需求进展和优化。 阅读详情

相关推荐

自然语言处理(NLP)实战项目

目标:自动生成文本的简短摘要。应用场景:新闻摘要、文档摘要、会议纪要。技术栈数据收集:使用摘要数据集(如CNN/Daily Mail)。数据预处理:文本清洗、分词、句子分割。模型选择:使用抽取式摘要(如TextRank)或生成式摘要(如BERT)。评估指标:ROUGE分数、人工评估等。以上是一些常见的自然语言处理实战项目,每个项目都有其特定的应用场景和技术栈。选择合适的项目时,应根据实际需求和资源情况进行评估,并结合最新的研究进展和技术工具进行实现。

AI逍遥子 2633

2022nlp视频教程大全 NLP自然语言处理教程 自然语言处理NLP从入门到项目实战

获取更多NLP实战资料 系统性地学NLP本来就既不可能也没必要,这么大个领域,而且一直在飞速发展,等你学完了黄花菜都凉了。 NLP的方法可以分成基于规则的方法和基于统计的方法。由于自然语言具备歧义性、递归性和创新性等特点,基于规则的方法局限性非常大, 因此主流的是基于统计的方法——机器学习/深度学习方法可以视作基于统计的方法的延伸。 到2020年的今天,数据驱动的监督式学习方法(包括传统机器学习和深度学习)基本上成了NLP的主流——所以你只需要首先从机器学习/深度学习方法入手就可以了,其他的可以随.

coder20222022的博客 1995

【NLP文本分类算法集锦】零基础入门经典文本分类项目实战(附代码+数据集)

本专栏整理了《NLP文本分类算法集锦》,内包含了各种常见的中英文文本分类算法,以及常见的NLP任务:情感分析、新闻分类以及谣言检测等。

优快云 精品推荐 1万+

《自然语言处理实战入门》 第一章: 自然语言处理(NLP)技术简介

本博客为《自然语言处理实战课程》---- 第一课:自然语言处理简介 讲稿 文章大纲本节课程导览1.自然语言处理(NLP)简介1.1 基础技术1.2 NLP 核心技术1.3 NLP+(高端技术)1.4 课程涵盖的主要内容总揽2.知名NLP服务系统与开源组件简介2.1 单一服务提供商2.1.1 汉语分词系统ICTCLAS2.1.2 哈工大语言云(Language Technology Platfor...

shiter编写程序的艺术 1万+

自然语言处理(NLP)原理与代码实战案例讲解

自然语言处理(NLP)原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来 自然语言处理(Natura

AI天才研究院 1517

【自然语言处理(NLP)】NLP实战:IMDB影评情感分析项目

*自然语言处理(Natural Language Processing,NLP)**是计算机科学领域与人工智能领域中的一个重要方向。它研究的是人类(自然)语言与计算机之间的交互。NLP的目标是让计算机能够理解、解析、生成人类语言,并且能够以有意义的方式回应和操作这些信息。词法分析:将文本分解成单词或标记(token),并识别它们的词性(如名词、动词等)。句法分析:分析句子结构,理解句子中词语的关系,比如主语、谓语、宾语等。语义分析:试图理解句子的实际含义,超越字面意义,捕捉隐含的信息。语用分析。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

Spark NLP自然语言处理实战学习资料

Spark NLP 是构建在 Apache Spark 之上的自然语言处理(NLP)库,专为处理海量文本数据而设计。它不仅集成了 Spark 的分布式计算能力,还融合了深度学习与传统 NLP 技术,支持从文本清洗、分词、词性标注到命名实体识别、文本分类等多种任务。其核心特性包括:支持多语言处理、提供预训练模型、具备高可扩展性与高性能。Spark NLP 广泛应用于金融领域的舆情监控、医疗行业的病历分析、客服系统的智能问答以及社交媒体的语义理解等场景,是构建企业级 NLP 应用的理想选择。

weixin_28895791的博客 1122

2024最新Typora配置指南:从安装到打造学术写作环境(含LaTeX/参考文献解决方案)

本文提供2024年最新Typora配置指南,详细讲解如何从安装开始,结合Pandoc、Zotero和LaTeX,打造高效的学术写作环境。指南涵盖Typora深度定制、学术主题配置、参考文献自动管理以及一键生成出版级PDF的完整解决方案,旨在帮助科研人员和学生实现内容与格式分离,大幅提升论文写作效率。

weixin_29258297的博客 211

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 899

PLc S7-200 smart如何使用Modbus 485通讯传输接收数据

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。提示:以下是本篇文章正文内容,下面案例可供参考。

xjbsw0的博客 6万+

Adams与Matlab联合仿真入门:从零搭建你的第一个动力学模型

本文为Adams与Matlab联合仿真新手提供了一份详尽的入门指南。文章从软件环境配置、版本兼容性检查讲起,逐步演示了如何在Adams中构建单摆动力学模型并定义输入输出接口,以及在Matlab/Simulink中搭建控制回路。通过一个完整的受控单摆实例,手把手教你完成从模型导出、模块生成到执行联合仿真的全流程,帮助你快速搭建并运行第一个联合仿真模型,实现动力学与控制系统的协同验证。

g5h6i7j的博客 699

Blender地形建模实战:5步搞定Gazebo仿真地形(附避坑指南)

本文提供了一份详细的Blender地形建模实战指南,旨在帮助开发者快速创建Gazebo仿真地形。文章通过五个核心步骤,从环境准备、地形雕刻、模型优化导出,到创建Gazebo模型包及问题排错,系统讲解了如何将Blender中的地形模型成功导入Gazebo进行机器人仿真,并重点分享了关键的避坑经验。

weixin_28475533的博客 345

C#上位机实战:PLC与检测设备无缝对接,构建产品质量实时判定系统

本文分享了基于C#开发的汽车零部件质量检测系统实现经验。系统采用三层架构:设备层(PLC/视觉相机/三坐标)、通信层(OPC UA/SDK/串口)和应用层(数据采集/判定/存储)。重点解决了三大技术难点:1)通过OPC UA订阅模式将PLC通信延迟从500ms降至50ms;2)反编译厂商Demo破解视觉SDK对接难题;3)采用时间戳+产品ID实现多设备数据同步。系统上线后质检人员减少67%,误判率降至0.5%,数据追溯效率显著提升。文章强调工业场景下稳定性优先于技术复杂度,实用经验值得借鉴。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 799

vue2学习笔记2-老规矩,从Hello World开始,了解Vue实例和模板

想要把“Hello,World”放置在页面上,首先需要准备一个HTML的块级元素div,来承接内容。

l_q_l的专栏 1258

终于找到两个稳定好用的Docker镜像加速源,拉取速度提升几十倍!

国内使用Docker经常遇到镜像拉取慢、超时失败的问题🐳 本文分享两个亲测好用的免费镜像加速源⚡ 实测拉取速度从十几分钟缩短到几十秒,稳定性接近100%📊 支持一键配置脚本,支持多平台使用✨

XiaoqiangClub的博客 952

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Python 机器学习实战 —— 无监督学习(下)
下一篇: TensorFlow 2.0 深度学习实战 —— 详细介绍损失函数、优化器、激活函数、多层感知机的实现原理
风尘浪子
博客等级 码龄21年 195粉丝 76原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值