Machine Learning机器学习之文本分析的词法分析、句法分析、语义分析(详细讲解)

目录

前言

词法分析:

词义消歧:

句法分析:

语义分析:

文本分析应用

1、文本分类:

设计过程:

代码实现:

完整代码: 

2、情感分析:

总结


博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!

🍅文末三连哦🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

前言

词法分析:

在机器学习中,文本分析的词法分析通常涉及使用统计和机器学习技术来从文本中提取词汇信息,并将文本切分成有意义的词语。这个过程通常被称为分词(tokenization)。以下是一些常见的机器学习方法在文本分析中的词法分析应用:

  1. 基于统计的分词方法

    • 基于频率统计的方法:根据词在文本中的频率信息,将文本分割成词语。常见的方法包括基于词频的分割、基于字符频率的分割等。
    • 基于信息熵的方法:利用信息熵原理,将文本划分成最小熵的词组合。常见的方法包括最大熵模型、信息熵分割等。
  2. 基于机器学习的分词方法

    • 条件随机场(CRF):CRF是一种序列标注模型,可以将文本分词任务视为一个序列标注问题,通过训练CRF模型来预测每个字符的词边界。
    • 隐马尔可夫模型(HMM):HMM也可以用于文本分词,将文本视为一个观测序列,通过训练HMM模型来估计最有可能的词边界。
  3. 深度学习方法

    • 循环神经网络(RNN)和长短期记忆网络(LSTM):RNN和LSTM是适用于序列数据的深度学习模型,在文本分词中可以用于学习文本序列中的词边界。
    • Transformer模型:Transformer是一种基于自注意力机制的深度学习模型,可以学习文本序列中的全局依赖关系,也可以用于文本分词任务。

以上方法都可以应用于文本分析中的词法分析任务,根据任务需求和数据特点选择合适的方法。在实践中,通常需要大量的标注好的训练数据来训练模型,并且需要进行模型选择和调优以获得最佳的性能。

词义消歧:

词义消歧(Word Sense Disambiguation,简称WSD)是自然语言处理和本体论中的一个核心问题。它指的是在特定的语境中,识别出某个歧义词的正确含义。歧义词是指有多个含义的词语,在不同的语境中可能有不同的含义。词义消歧的目的是根据上下文信息,确定出歧义词在特定语境中的具体含义。

解决词义消歧问题的方法多种多样,以下是一些主要方法:

  1. 利用语境消除歧义:通过给歧义句增设上下文,创设一个具体的语言环境,以消除歧义。例如,“我去上课”可以改为“我去听老师上课”或“我去给学生上课”。
  2. 换用或添加适当的词语:如果造成歧义的原因是词语的多义性,将容易产生歧义的词语换成意义单一的词语,或添加一些虚词使层次清晰,从而消除歧义。例如,“我要炒肉丝”可以改为“我要去炒肉丝”或“我要吃炒肉丝”。
  3. 调整词语顺序:有时把句内有关词语的位置改动一下,也可以消除歧义。例如,“这个人谁也不认识”可以改为“谁也不认识这个人”或“这个人不认识谁”。
  4. 利用语音手段:词语的读音不同,意义就可能不同;语言停顿不同,句义也就不同。因此,可以通过语音手段来消除歧义。

此外,随着技术的发展,词义消歧问题也可以通过机器学习、深度学习等算法进行自动处理。这些方法通常基于大规模的语料库进行训练,学习词语在不同上下文中的含义,并据此进行词义消歧。

总之,词义消歧是自然语言处理领域中的一个重要问题,具有广泛的应用,如机器翻译、问答系统、语音识别、信息检索等。通过提高词义消歧的准确性,可以进一步提高这些应用的性能和效率。

句法分析:

句法分析,它主要对句子或短语的结构进行分析,以确定构成句子的各个词、短语等之间的相互关系以及各自在句子中的作用。这种分析不仅有助于我们理解句子的结构,还能进一步揭示句子所传达的深层含义。

句法分析的过程通常包括对句子成分的识别,如主语、谓语、宾语、定语和状语等。这些成分在句子中扮演着不同的角色,共同构成了句子的完整意义。例如,主语通常表示句子所描述的主体,谓语则描述主语的行为或状态,而宾语则是行为的对象。通过识别这些成分,我们可以更清晰地理解句子的结构和含义。

此外,句法分析还关注句子中词语之间的语法关系。这些关系包括词与词之间的依存关系、句子的层次结构等。通过分析这些关系,我们可以进一步理解句子的语法结构和语义信息。

句法分析在自然语言处理中有广泛的应用。例如,在机器翻译中,句法分析可以帮助系统更好地理解源语言和目标语言之间的语法结构和语义关系,从而提高翻译的质量和准确性。在信息抽取中,句法分析可以帮助确定实体之间的关系,从而提供更准确的信息抽取结果。在问答系统中,句法分析可以帮助系统理解用户提问的句子结构和语法规则,从而更准确地回答用户的问题。

在句法分析领域,有多种方法和技术被用于分析和理解句子的结构。这些方法和技术在不断发展和完善,以应对自然语言处理中的各种挑战。

句法分析常用方法:

  1. 基于规则的方法
    • 原理:基于规则的方法依赖于语言学家或专家手工编写的语法规则集。这些规则描述了语言中可能的句法结构,并用于指导句法分析的过程。
    • 实现过程:分析器会根据这些规则对输入的句子进行匹配和推导,生成符合这些规则的句法结构。通常,这种方法需要构建一个语法规则库,并设计一个解析算法来应用这些规则。
  2. 移进-归约方法(Shift-Reduce Parsing):
    • 原理移进-归约是自底向上语法分析的一种形式,它使用一个栈来保存文法符号,并用一个输入缓冲区来存放其余符号。在解析过程中,分析器不断地从输入缓冲区中移进符号到栈中,并根据文法规则进行归约操作,即将栈顶的某些符号替换为新的符号。
    • 实现过程:分析器从输入句子的第一个词开始,依次移进符号到栈中。当栈顶的符号与输入缓冲区中的符号符合某条归约规则时,就进行归约操作。这个过程一直持续到所有的符号都被处理完,最终栈中剩下的就是句子的句法结构。
  3. 线图分析法(Chart Parsing):
    • 原理线图分析法是基于CFG(上下文无关文法)规则的分析方法。它使用一组节点和边来表示输入字符串的句法结构。每个节点对应着输入字符串中的一个词或短语,而边则表示这些词或短语之间的关系。
    • 实现过程:分析器从输入句子的第一个词开始,逐步构建线图。在构建过程中,分析器会尝试将句子中的词或短语组合成更大的结构,并在线图中添加相应的节点和边。这个过程一直持续到存在一个边可以覆盖线图中所有的节点,这时就得到了句子的句法结构。
  4. 依存句法分析
    • 原理:依存句法分析基于词语之间的依存关系,即一个词依赖于另一个词而存在。它旨在揭示句子中词语之间的主谓、动宾、定中等关系。
    • 实现过程:分析器首先识别出句子中的核心词(通常是主语或谓语),然后找出与核心词有依存关系的词,并确定这些依存关系的类型。这个过程递归地进行,直到所有的词都被处理完,最终形成一个依存关系树。

语义分析:

语言模型的句法分析是利用统计语言模型(如$n$-gram模型)或基于深度学习的语言模型(如循环神经网络、Transformer等)来进行句法分析的一种方法。其原理和分析过程可以概括如下:

  1. 语言模型简介

    • 语言模型是用来计算一个句子序列在语言中出现的概率的模型。它可以估计一个句子在语言中的流畅度和合理性。传统的语言模型可以基于统计方法(如$n$-gram模型)或基于深度学习方法进行建模。
  2. 句法分析任务

    • 在句法分析中,我们关注句子中词语之间的句法结构关系,通常表示为一个树状结构,即句法树。句法分析的目标是根据句子中词语的语法属性和上下文信息,构建句子的合理句法树,以表示句子中的语法结构。
  3. 基于语言模型的句法分析

    • 在基于语言模型的句法分析中,我们利用语言模型来评估不同句法树的合理性,选择最可能的句法树作为最终的分析结果。具体过程如下:
      • 句法树构建:首先根据语法规则和词性标注信息构建候选的句法树。这些句法树可能包含不同的句法结构和组合方式。
      • 句法树评分:然后利用语言模型来为每个句法树计算一个概率分数,表示句子在语言模型下出现的概率。这个概率分数可以通过统计语言模型(如$n$-gram模型)或基于深度学习的语言模型来计算。
      • 选择最优句法树:最后,选择具有最高概率分数的句法树作为最终的句法分析结果。这个过程可以通过搜索算法(如动态规划算法、贪婪搜索算法等)来实现。
  4. 基于深度学习的句法分析

    • 近年来,基于深度学习的句法分析方法得到了广泛应用。这些方法通常使用循环神经网络(RNN)、长短期记忆网络(LSTM)、Transformer等模型来建模句子中词语之间的依赖关系,并直接输出句子的句法结构。这种方法不需要显式地构建候选的句法树,而是通过端到端的方式直接学习句法结构。

总的来说,语言模型的句法分析通过利用语言模型评估不同句法结构的合理性,选择最可能的句法结构作为句法分析结果。这种方法结合了语言模型的能力和句法分析的需求,能够在一定程度上提高句法分析的准确性和效率。

文本分析应用

1、文本分类:

基于Python的文本分类实现过程。在这个案例中,我们将使用朴素贝叶斯分类器来对文本进行分类。我们将使用一个名为20 Newsgroups的文本数据集,其中包含20个不同主题的新闻组文章。我们将尝试将这些文章分为不同的主题类别。

设计过程:

  • 数据收集与预处理

    • 我们首先需要从20 Newsgroups数据集中下载数据,并对数据进行预处理。预处理步骤可能包括移除停用词、词干提取、标记化等。
  • 特征提取

    • 我们将文本数据转换为特征向量,以便输入到分类器中进行训练和预测。常用的特征提取方法包括词袋模型(Bag of Words)、TF-IDF(Term Frequency-Inverse Document Frequency)等。
  • 建立分类器模型

    • 我们将选择朴素贝叶斯分类器作为我们的模型。我们可以使用scikit-learn库中的MultinomialNB来构建朴素贝叶斯分类器。
  • 模型训练

    • 使用训练数据对分类器模型进行训练。
  • 模型评估

    • 使用测试数据对训练好的模型进行评估,计算分类器的准确率、精确率、召回率等指标。
  • 模型应用

    • 最后,我们可以使用训练好的模型来对新的文本进行分类。

代码实现:


# 1. 数据收集与预处理
newsgroups_data = fetch_20newsgroups(subset='all')
X = newsgroups_data.data
y = newsgroups_data.target# 2. 特征提取
vectorizer = TfidfVectorizer(max_features=6000)  # 使用TF-IDF进行特征提取,最多保留5000个特征词
X_vectorized = vectorizer.fit_transform(X)# 3. 建立分类器模型
classifier = MultinomialNB()  # 使用朴素贝叶斯分类器作为模型# 4. 模型训练
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.2, random_state=42)  # 将数据划分为训练集和测试集
classifier.fit(X_train, y_train)  # 在训练集上训练模型# 5. 模型评估
y_pred = classifier.predict(X_test)  # 在测试集上进行预测
accuracy = accuracy_score(y_test, y_pred)  # 计算分类准确率
print("检测精度:", accuracy)
print("输出分类结果(准确率、召回率、F1值等指标):\n", classification_report(y_test, y_pred))  # 输出分类报告

绘制了20 Newsgroups数据集中不同类别的分布情况的直方图,以展示数据集的类别分布情况。接着,它计算了特征提取后的词频信息,选取了前20个TF-IDF值最高的词语,并绘制了词语的TF-IDF值条形图。通过这样的可视化方式,我们可以更好地理解数据集的特征信息和类别分布情况。

plt.figure(figsize=(10, 6))
plt.hist(y, bins=20, color='skyblue', edgecolor='black')
plt.xlabel('Category')
plt.ylabel('Frequency')
plt.title('Distribution of Different Categories')
plt.xticks(range(20), newsgroups_data.target_names, rotation=45)
plt.grid(True)
plt.show()# 可视化特征提取后的词频信息
feature_names = vectorizer.get_feature_names()
tfidf_values = X_vectorized.toarray().sum(axis=0)  # 计算每个词的TF-IDF值总和
sorted_indices = tfidf_values.argsort()[::-1]  # 按TF-IDF值排序
top_features = [feature_names[i] for i in sorted_indices[:20]]  # 选择前20个TF-IDF值最高的词语plt.figure(figsize=(10, 6))
plt.barh(range(20), tfidf_values[sorted_indices[:20]], color='skyblue', edgecolor='black')
plt.xlabel('TF-IDF Value')
plt.ylabel('Word')
plt.title('Top 20 Words with Highest TF-IDF Values')
plt.yticks(range(20), top_features)
plt.gca().invert_yaxis()  # 反转y轴,使得词频值高的词语在顶部显示
plt.grid(True)
plt.show()

完整代码: 

import matplotlib.pyplot as plt
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report# 1. 数据收集与预处理
newsgroups_data = fetch_20newsgroups(subset='all')
X = newsgroups_data.data
y = newsgroups_data.target# 2. 特征提取
vectorizer = TfidfVectorizer(max_features=6000)  # 使用TF-IDF进行特征提取,最多保留5000个特征词
X_vectorized = vectorizer.fit_transform(X)# 3. 建立分类器模型
classifier = MultinomialNB()  # 使用朴素贝叶斯分类器作为模型# 4. 模型训练
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.2, random_state=42)  # 将数据划分为训练集和测试集
classifier.fit(X_train, y_train)  # 在训练集上训练模型# 5. 模型评估
y_pred = classifier.predict(X_test)  # 在测试集上进行预测
accuracy = accuracy_score(y_test, y_pred)  # 计算分类准确率
print("检测精度:", accuracy)
print("输出分类结果(准确率、召回率、F1值等指标):\n", classification_report(y_test, y_pred))  # 输出分类报告# 6. 模型应用
new_text = ["我喜欢你就像风吹了八千里,不问归期!"]
new_text_vectorized = vectorizer.transform(new_text)  # 对新文本进行特征提取
predicted_category = classifier.predict(new_text_vectorized)  # 使用训练好的模型进行分类
print("预测类别:", newsgroups_data.target_names[predicted_category[0]])  # 输出预测的类别# 7. 可视化数据处理结果
# 可视化不同类别的分布情况
plt.figure(figsize=(10, 6))
plt.hist(y, bins=20, color='skyblue', edgecolor='black')
plt.xlabel('Category')
plt.ylabel('Frequency')
plt.title('Distribution of Different Categories')
plt.xticks(range(20), newsgroups_data.target_names, rotation=45)
plt.grid(True)
plt.show()# 可视化特征提取后的词频信息
feature_names = vectorizer.get_feature_names()
tfidf_values = X_vectorized.toarray().sum(axis=0)  # 计算每个词的TF-IDF值总和
sorted_indices = tfidf_values.argsort()[::-1]  # 按TF-IDF值排序
top_features = [feature_names[i] for i in sorted_indices[:20]]  # 选择前20个TF-IDF值最高的词语plt.figure(figsize=(10, 6))
plt.barh(range(20), tfidf_values[sorted_indices[:20]], color='skyblue', edgecolor='black')
plt.xlabel('TF-IDF Value')
plt.ylabel('Word')
plt.title('Top 20 Words with Highest TF-IDF Values')
plt.yticks(range(20), top_features)
plt.gca().invert_yaxis()  # 反转y轴,使得词频值高的词语在顶部显示
plt.grid(True)
plt.show()

执行结果:检测精度84.6%

 

 词语的TF-IDF值条形图数据可视化结果

 

2、情感分析:

基于机器学习的情感分析是一种利用机器学习算法对文本进行情感倾向分析的方法。而SnowNLP是一个功能强大的Python文本处理库,它包含了中文分词、词性标注、情感分析、文本分类等多种功能。结合SnowNLP和机器学习算法,可以构建出高效、准确的情感分析系统。

在使用SnowNLP进行情感分析时,通常需要先对文本进行预处理,包括分词、去除停用词等步骤。然后,可以利用SnowNLP的情感分析功能对文本进行情感打分,或者利用机器学习算法对文本进行情感分类。简单案列:

from snownlp import SnowNLP  # 示例文本  
text = "我喜欢你,就像风吹了八千里,不问归期!"  # 初始化SnowNLP对象  
s = SnowNLP(text)  # 使用SnowNLP进行情感分析  
# sentiments的值域为[0, 1],越接近1情感越积极,越接近0情感越消极  
sentiments = s.sentiments  # 输出情感分析结果  
if sentiments > 0.5:  print("积极情感")  
elif sentiments < 0.5:  print("消极情感")  
else:  print("中性情感")

使用scikit-learn的朴素贝叶斯分类器结合SnowNLP的文本处理功能进行情感分析: 

from snownlp import SnowNLP  
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.model_selection import train_test_split  
from sklearn.naive_bayes import MultinomialNB  
from sklearn.metrics import accuracy_score  
import pandas as pd  # 假设你有一个CSV文件,其中包含两列:text(文本内容)和label(情感标签,如1表示积极,0表示消极)  
data = pd.read_csv('sentiment_data.csv')  # 使用SnowNLP进行分词  
data['segmented'] = data['text'].apply(lambda x: ' '.join(SnowNLP(x).words))  # 特征提取:将文本转换为词频向量  
vectorizer = CountVectorizer()  
X = vectorizer.fit_transform(data['segmented'])  # 情感标签  
y = data['label']  # 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 使用朴素贝叶斯分类器进行情感分类  
clf = MultinomialNB()  
clf.fit(X_train, y_train)  # 预测测试集  
y_pred = clf.predict(X_test)  # 计算准确率  
accuracy = accuracy_score(y_test, y_pred)  
print(f'Accuracy: {accuracy * 100:.2f}%')

总结

今天的学习内容主要围绕机器学习之文本分析的词法分析、句法分析、语义分析展开,分别详细介绍相关概念、定义、原理,以及如何利用机器学习方法实现语言分析。接着我们通过文本分类和情感分析案列实现上述理论内容,基于前面博文提到的贝叶斯网络机器学习方法等。在学习过程中,我们了解到可以使用SnowNLP的内置情感分析功能来预测文本的情感倾向为此,我们学习了如何结合SnowNLP的文本处理功能和scikit-learn等机器学习库来构建基于机器学习的情感分析模型。

总的来说,通过学习和实践,我们对情感分析有了更深入的了解,并掌握了使用SnowNLP和机器学习进行情感分析的基本方法。这将为我们未来的文本处理和分析工作提供有力的支持。

 最后,创作不易!非常感谢大家的关注、点赞、收藏、评论啦!谢谢四连哦!好人好运连连,学习进步!工作顺利哦! 

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

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

相关文章

【Go】四、包名、访问范围控制、标识符、运算符

文章目录 1、_2、包名3、命名大小影响可访问范围4、运算符5、获取终端输入 1、_ 下划线"_"本身在Go中是一个特殊的标识符&#xff0c;称为空标识符用于忽略某个值 1&#xff09;忽略导入的没使用的包 2&#xff09;忽略某个返回值 2、包名 main包是程序的入口包&a…

关于 HEAP CORRUPTION DETECTED:after Normal block 错误的原因及解析

目录 一、HEAP CORRUPTION DETECTED:after Normal block 出现的报错情况&#xff1a; 二、问题原因&#xff08;重要&#xff09;&#xff1a; 三、举例 1.错误代码如下&#xff1a; 2.错误原因及分析&#xff08;重要&#xff09;&#xff1a; 3.解决方法 ​编辑 4.正…

【Linux C | 多线程编程】线程的连接、分离,资源销毁情况

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-04-01 1…

SSM框架学习——MyBatis关联映射

MyBatis关联映射 为什么要关联映射 实际开发中&#xff0c;对数据库操作常常会涉及多张表&#xff0c;所以在OOP中就涉及对象与对象的关联关系。针对多表操作&#xff0c;MyBatis提供关联映射。 关联关系概述 一对一&#xff1a;A类中定义B类的属性b&#xff0c;B类中定义A…

MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记

以前微处理器&#xff08;MPU&#xff09;与微控制器&#xff08;MCU&#xff09;是截然不同的两种设备&#xff0c;MPU支持丰富的软件系统&#xff0c;如Linux和相关的软件堆栈&#xff0c;而MCU通常将专注于裸机和RTOS。近年来&#xff0c;随着MCU的性能越来越高&#xff0c;…

【Spring源码】WebSocket做推送动作的底层实例

一、前瞻 Ok&#xff0c;开始我们今天的对Spring的【模块阅读】。 那就挑Web里的WebSocket模块&#xff0c;先思考下本次阅读的阅读线索&#xff1a; WebSocket在Spring里起到什么作用这个模块采用了什么设计模式我们都知道WebSocket可以主动推送消息给用户&#xff0c;那做推…

halcon图像膨胀

1、原理&#xff1a; 使用结构元素在图像上移动&#xff0c;如果结构元素中有任意一个像素和图像上的非零像素重叠&#xff0c;则保留此时结构元素中心所在位置&#xff0c;并将其像素值设置为非零。 2、halcon代码 其中圆形结构元素可设置半径&#xff0c;矩形结构元素设置…

MySQL故障排查与生产环境优化

一、MySQL单实例常见故障 1.逻辑架构图 MySQL逻辑架构图客户端和连接服务核心服务功能存储引擎层数据存储层 2.故障一 故障现象 ERROR 2002 (HY000): Cant connect to local MySQL server through socket/data/mysql/mysql.sock(2) 问题分析 数据库未启动或者数据库端口…

Yolo 自制数据集dect训练改进

上一文请看 Yolo自制detect训练-CSDN博客 简介 如下图&#xff1a; 首先看一下每个图的含义 loss loss分为cls_loss, box_loss, obj_loss三部分。 cls_loss用于监督类别分类&#xff0c;计算锚框与对应的标定分类是否正确。 box_loss用于监督检测框的回归&#xff0c;预测框…

蓝桥杯真题:成绩统计

这题思路简单&#xff0c;但是输出结果的位置容易出错&#xff0c;题目要求四舍五入&#xff0c;所以要用Math.round&#xff08;&#xff09;的方法

Python快速入门系列-7(Python Web开发与框架介绍)

第七章:Python Web开发与框架介绍 7.1 Flask与Django简介7.1.1 Flask框架Flask的特点Flask的安装一个简单的Flask应用示例7.1.2 Django框架Django的特点Django的安装一个简单的Django应用示例7.2 前后端交互与数据传输7.2.1 前后端交互7.2.2 数据传输格式7.2.3 示例:使用Flas…

解决GNU Radio+USRP实现OFDM收发在接收端存在误码问题

文章目录 前言一、OFDM 收发流程1、OFDM 收端流程2、OFDM 收端流程 二、问题所在1、find_trigger_signal 函数解读2、general_work 函数3、问题所在 三、修改源码四、运行结果1、频谱2、传输数据测试 五、调试小技巧六、资源自取 前言 在使用 GNU Radio 时使用官方例程搭建 GN…

git clone没有权限的解决方法

一般情况 git clone时没有权限&#xff0c;一般是因为在代码库平台上没有配置本地电脑的id_rsa.pub 只要配置上&#xff0c;一般就可以正常下载了。 非一般情况 但是也有即使配置了id_rsa.pub后&#xff0c;仍然无法clone代码的情况。如下 原因 这种情况是因为ssh客户端…

前端常用代码整理— js,jquery篇(3)

目录 1.判断是否是json字符串 2.获取当前网址 3.将文本复制到剪贴板 4.获取一个月的天数 5.展平数组 6.要修改getRandomItem函数以返回数组中的随机两个元素&#xff0c;可以尝试以下代码 1.判断是否是json字符串 const isJson str > {try {JSON.parse(str);return …

通过 Cookie、Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(一)

本篇博客对应“2.3 会话管理”小节 视频名称&#xff1a;会话管理 视频链接 什么是HTPP协议&#xff1f; HTTP&#xff0c;Hpyer Text Transfer Protocl&#xff1a;定义了浏览器怎样从&#xff08;万维网客户进程&#xff09;怎样向Web服务器&#xff08;万维网服务器&#…

vue 文件下载

1.返回路径下载 注: 针对一些浏览器无法识别的文件格式&#xff08;如pdf、xls、ppt&#xff09;。可以直接在地址栏上输入URL即可触发浏览器的下载功能。 情况1 //地址栏输入文件URLwindow.location.href URLwindow.open(URL) 注:该方式将下载逻辑放在后端处理&#xff0c…

Mysql的高级语句3

目录 一、子查询 注意&#xff1a;子语句可以与主语句所查询的表相同&#xff0c;但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反&#xff0c;就是将子查询结果&#xff0c;进行取反处理 3、insert into in 4、update…

IO练习题

1&#xff1a;使用 dup2 实现错误日志功能 使用 write 和 read 实现文件的拷贝功能&#xff0c;注意&#xff0c;代码中所有函数后面&#xff0c;紧跟perror输出错误信息&#xff0c;要求这些错误信息重定向到错误日志 err.txt 中 #include <myhead.h>//文件IO实现文件拷…

实现offsetof宏以及交换一个整数二进制奇偶位的宏

目录 1. offsetof宏2. 交换奇偶位 1. offsetof宏 我们想用宏来实现offsetof函数,首先要了解这个函数的用法。 1.1 offsetof函数的介绍及用法 &#xff08;1&#xff09;功能&#xff1a;用来计算结构体中一个成员在该结构体中的相对起始位置的偏移量&#xff0c;单位是字节。 …

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus&#xff08;ClamAV&#xff09;是免费而且开放源代码的防毒软件&#xff0c;软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行&#xff0c;它不将杀毒作为主要功能&#xff0c;默认只能查出系统内的病毒&#xff0c;但是无法清除。需要用户自行对病毒…