自然语言处理-文本表示: Embedding技术

目录

I. 引言

A. 文本表示介绍

B. 引入Embedding技术的重要性和应用领域

II. 传统文本表示方法

A. One-Hot编码

B. 词袋模型

C. TF-IDF

III. 什么是文本表示-Embedding

A. 定义和概念

B. Embedding的目标和作用

IV. 常见Embedding技术

A. Word2Vec

1. CBOW模型

2. Skip-gram模型

3. 结构与训练方法

B. GloVe

1. 全局向量的词嵌入

2. 基于共现矩阵的方法

C. FastText

1. 子词嵌入与N-gram特征

2. 训练方法和效果评估

D. BERT

1. Transformer模型

2. Masked Language Model

3. Next Sentence Prediction

V. Embedding技术的优势和挑战

A. 提高语义表示和语义相似度计算

B. 降维和节省存储空间

C. 语言差异和多义词带来的问题


I. 引言

A. 文本表示介绍

        在自然语言处理领域,文本表示是指将文本数据转化为机器可以理解和处理的向量形式。传统上,计算机处理文本时主要采用离散符号表示,比如One-Hot编码、词袋模型和TF-IDF等。然而,这些传统方法存在一些问题,比如无法捕捉词语之间的语义关系,不能区分词义不同但拼写相同的词汇,以及无法处理长文本等。

B. 引入Embedding技术的重要性和应用领域

Embedding技术通过将每个词语或者文本映射到一个高维空间中的实数向量,可以有效地解决传统方法的局限性,提供更加丰富和有意义的文本表示。这种连续、低维的向量表示可以捕捉词义和语义上的相似性,使得机器能够更好地处理文本数据。

Embedding技术在自然语言处理和机器学习的各个领域中起着关键作用。以下是一些典型的应用领域:

  1. 文本分类和情感分析:Embedding技术可以将文本转换为向量表示,从而应用于文本分类、情感分析和情绪识别等任务。通过学习词汇的分布和语义信息,可以更好地区分不同类别的文本。

  2. 信息检索和推荐系统:利用Embedding技术可以将文档、查询和用户表示为向量,从而提高信息检索和推荐系统的准确性和效率。通过比较向量之间的相似性,可以更好地匹配用户查询与文档内容。

  3. 机器翻译和语音识别:Embedding技术在机器翻译和语音识别中也发挥着重要作用。通过将源语言和目标语言的单词或句子表示为向量,可以实现跨语言的翻译和语音转写。

  4. 自然语言生成和问答系统:Embedding技术可以为自然语言生成和问答系统提供丰富的语义信息。通过将问题、上下文和答案等表示为向量,可以更好地理解语言的上下文和语义结构。

总的来说,引入Embedding技术对于实现更加准确、高效和智能的自然语言处理应用具有重要的意义,它提供了一种更加有效地表达和理解文本数据的方式。随着技术的不断发展和改进,我们可以期待Embedding技术在更多领域和任务中的应用和突破。

II. 传统文本表示方法

A. One-Hot编码

        One-Hot编码是一种简单而常用的文本表示方法。它将每个词语表示为一个唯一的向量,向量的维度等于词汇表的大小。该向量中只有一个元素为1,表示该词语在文本中出现,其他元素都为0,表示不出现。例如,对于一个包含n个独立词语的文本,使用One-Hot编码时,每个词语都将被表示为一个n维的向量。

        One-Hot编码的优点是简单直观,易于理解和实现。但是,它存在一些缺点。首先,One-Hot编码无法表达词语之间的语义相似性,因为所有的词语都是独立的。其次,One-Hot编码会导致高维稀疏表示,当词汇表很大时,会占用大量的存储空间和计算资源。此外,One-Hot编码也无法处理词语的组合和顺序信息。

B. 词袋模型

        词袋模型(Bag-of-Words)是一种基于统计的文本表示方法。它将文本看作是词语的集合,忽略了词语出现的顺序,只关注词语的频率。在词袋模型中,文本被表示为一个固定长度的向量,向量的维度等于词汇表的大小。每个维度对应一个词语,向量的元素值表示该词语在文本中出现的次数或频率。

        词袋模型的优点是简单、易于实现,并且可以捕捉词语的频率信息。但是,词袋模型忽略了词语的顺序和语义信息,无法捕捉上下文的语义关系。

C. TF-IDF

        TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本表示方法,用于衡量一个词语对于一个文档或一个语料库的重要性。

        TF(词频)指的是一个词语在文本中出现的次数或频率,它衡量了一个词语在文本中的重要程度。IDF(逆文档频率)指的是一个词语在整个语料库中出现的频率的倒数,它衡量了一个词语的普遍性。TF-IDF的计算公式是:TF-IDF = TF * IDF。

        TF-IDF的优点是能够将注意力集中在重要且具有区分度的词语上,忽略那些出现频率较高且普遍的词语。通过对词语进行加权,TF-IDF能够捕捉词语的重要性和独特性。然而,TF-IDF也存在一些问题,比如无法处理词语的顺序和语义信息,以及对于过于罕见或过于常见的词语效果不好。

III. 什么是文本表示-Embedding

A. 定义和概念

        Embedding是一种文本表示方法,通过将词语映射到一个低维空间的向量表示,将高维的离散词语转换为连续的实值向量。在Embedding中,每个词语被表示为一个固定长度的稠密向量,向量的维度通常远小于词汇表的大小。

        Embedding通过学习词语之间的相关性和语义关系,将具有相似语义的词语映射到接近的向量空间位置。这种连续的向量表示可以捕捉词语之间的语义和上下文信息,使得计算机能够更好地理解文本。

B. Embedding的目标和作用

Embedding的目标是将词语从离散的符号形式转换为连续的向量表示,以便于计算机进行处理和分析。Embedding的作用主要体现在以下几个方面:

  1. 语义相似度:通过将具有相似语义的词语映射到接近的向量空间位置,Embedding可以衡量词语之间的语义相似度。例如,对于两个相似的词语,它们的Embedding向量之间的距离会比较小。

  2. 上下文关系:Embedding可以捕捉词语的上下文信息,即词语在不同上下文中的含义和用法。这对于词义消歧、情感分析和机器翻译等任务非常重要。

  3. 组合表达:通过将词语的向量进行组合,Embedding可以生成句子和文本的整体表示。这有助于计算机更好地理解句子的意思和含义。

  4. 降维和压缩:Embedding将高维的离散词语转换为低维的连续向量表示,可以降低数据的维度和复杂度,从而减少存储空间和计算资源的需求。

  5. 增强模型性能:使用Embedding作为输入,可以提高各种自然语言处理任务的性能,如文本分类、命名实体识别、文本生成等。

总的来说,Embedding通过学习词语之间的语义关系和上下文信息,将文本表示转换为连续的向量表示。这种连续向量表示能够更好地捕捉词语之间的语义关联和上下文信息,为各种自然语言处理任务提供了更有效的输入表示。

IV. 常见Embedding技术

A. Word2Vec

        Word2Vec是一种常见的基于神经网络的词嵌入(Embedding)技术,用于将词语映射到低维连续向量空间中。Word2Vec通过学习词语在文本上下文中的分布模式,将具有相似语义的词语映射到相近的向量空间位置。

1. CBOW模型

        CBOW模型是Word2Vec的一种模型,它的思想是根据上下文中的词语来预测当前词语。CBOW模型的输入是上下文窗口中的词语,输出是当前词语。假设上下文窗口的大小为c,对于一个给定的句子,CBOW模型的目标是最大化当前词语的条件概率。

        CBOW模型的架构包括一个隐藏层和一个输出层。隐藏层是输入词语向量的平均值,它捕捉了上下文中的语义信息。输出层是当前词语的概率分布,通过softmax函数计算得到。CBOW模型通过最大化正确词语的概率,来学习词语的向量表示。

2. Skip-gram模型

        Skip-gram模型是Word2Vec的另一种模型,它的思想是根据当前词语来预测上下文中的词语。Skip-gram模型的输入是当前词语,输出是上下文窗口中的词语。与CBOW模型不同,Skip-gram模型通过最大化上下文中词语的条件概率来学习词向量。

        Skip-gram模型的架构也包括一个隐藏层和一个输出层。隐藏层是输入词语的向量表示,输出层是上下文窗口中每个词语的概率分布。Skip-gram模型通过最大化上下文词语的概率,来学习词语的向量表示。

3. 结构与训练方法

        Word2Vec模型的训练方法通常使用神经网络的反向传播算法进行优化。在训练过程中,模型通过最小化预测词语与真实词语之间的差距(如交叉熵损失函数),来调整词语的向量表示。

        训练Word2Vec模型一般需要大量的文本数据。可以使用现有的大规模语料库,如维基百科等,也可以使用自己的文本数据。在训练过程中,首先将文本进行预处理,包括分词、去除停用词等。然后,根据CBOW或Skip-gram模型的架构和训练目标,设置合适的参数和超参数,如词向量的维度、上下文窗口大小、学习率等。接下来,通过多次迭代训练,不断优化词向量的表示。

        Word2Vec模型的训练结果是每个词语的向量表示。这些向量可以用于计算词语之间的相似度、执行词汇补全和情感分析等任务。此外,Word2Vec模型也支持通过向量运算来捕捉词语之间的语义关系,例如可以通过计算"国王 - 男人 + 女人"得到近似于"女王"的向量表示。

        总的来说,Word2Vec是一种用于学习词嵌入的神经网络模型,通过训练大量文本数据,将词语映射到连续的向量空间中,捕捉词语之间的语义关系和上下文信息。CBOW模型和Skip-gram模型是Word2Vec的两种变体,分别从上下文和当前词语的角度进行学习。

B. GloVe

        GloVe是一种常见的词嵌入技术,它通过利用全局统计信息来学习词语的向量表示。GloVe的基本思想是通过分析词语在共现矩阵中的统计信息,得到词语之间的关系,并将这些关系编码成向量形式。

1. 全局向量的词嵌入

        GloVe采用了一种全局向量的词嵌入方法,与Word2Vec中的局部上下文窗口不同,它通过对整个语料库进行统计分析得到全局的语义信息。全局向量的词嵌入意味着每个词语的向量表示是基于整个语料库的统计特征,而不仅仅是局部上下文。

2. 基于共现矩阵的方法

        GloVe的核心思想是基于共现矩阵的方法。共现矩阵记录了词语之间在给定上下文窗口中的共现次数。通过分析这些共现次数,GloVe可以获取词语之间的语义关系。具体而言,GloVe认为两个词语的共现次数与它们的关系强度相关,而这种关系可以被编码成它们的词向量之间的线性关系。

        GloVe模型的训练过程可以简单分为以下几个步骤:

Step 1: 构建共现矩阵

        首先,需要遍历整个语料库,统计每个词语与其上下文词语之间的共现次数。可以选择不同的上下文窗口大小、加权策略等来构建共现矩阵。

Step 2: 定义损失函数

        GloVe模型的目标是最小化损失函数,该损失函数定义了词语的共现关系和它们的词向量之间的关系。GloVe使用了平方差损失函数,将词语的共现次数进行对数变换,并通过线性关系来计算两个词向量的内积。

Step 3: 优化模型参数

        通过反向传播算法,GloVe模型可以优化词向量的表示,并调整共现矩阵中的权重。在优化过程中,可以使用梯度下降等优化方法来更新模型的参数。

Step 4: 获取词向量表示

        经过多次迭代训练后,GloVe模型可以得到每个词语的向量表示。这些向量可以用于计算词语之间的相似度、执行词汇补全和情感分析等任务。与Word2Vec类似,GloVe模型也支持通过向量运算来捕捉词语之间的语义关系。

        总结而言,GloVe是一种全局向量的词嵌入方法,通过基于共现矩阵的分析,学习词语之间的语义关系。通过优化模型参数,可以得到每个词语的向量表示,用于词语相关任务。与Word2Vec不同,GloVe的训练过程利用了整个语料库的统计信息,提供了更全局和全面的词嵌入表示。

C. FastText

        FastText是一种常见的词嵌入技术,它基于子词(subword)嵌入与N-gram特征。FastText的独特之处在于它将词语看作是由子词构成的,并将子词的信息纳入到词嵌入模型中。这使得FastText在处理未登录词(out-of-vocabulary,OOV)和稀有词时表现更好。

1. 子词嵌入与N-gram特征

        FastText通过将词语切分为子词来获得更精细的表示。例如,对于单词"apple",它可以被切分为"ap"、"app"、"appl"和"apple"等子词。每个子词都有一个对应的向量表示,而词语的向量表示则是它所有子词向量的平均值或拼接(concatenation)得到。

        此外,FastText还利用了N-gram特征。N-gram是指长度为N的连续字符序列。例如,在单词"apple"中,2-gram特征包括"ap"、"pp"、"pl"和"le"等。FastText会考虑到不同长度的N-gram特征,并将它们作为额外的信息添加到词向量中。这样做可以捕捉到词语内部的更细粒度的语义和特征。

2. 训练方法和效果评估

        FastText的训练方法与Word2Vec类似,可以使用Skip-gram或CBOW(Continuous Bag of Words)模型。在训练过程中,FastText会遍历语料库,利用上下文窗口来预测目标词语或子词。通过最大化预测目标的概率或最小化损失函数,FastText学习到每个词语或子词的向量表示。

        FastText的效果评估通常采用词语相似度和词语分类任务。对于词语相似度,可以计算词语向量间的余弦相似度或欧氏距离来评估相似性的程度。对于词语分类任务,可以使用FastText训练一个分类模型,并在测试集上评估模型的准确率、召回率等指标。

以下是一个示例代码,展示如何使用FastText进行词嵌入训练和应用:

from gensim.models import FastText# 训练FastText模型
sentences = [["I", "love", "to", "eat", "apples"], ["Apples", "are", "tasty"]]
model = FastText(sentences, size=100, window=5, min_count=1, workers=4, sg=1)# 获取词向量
print(model.wv['apples'])  # 获取"apples"的词向量# 寻找最相似的词语
similar_words = model.wv.most_similar('apples')
print(similar_words)  # 输出最相似的词语及相似度# 完成词语分类任务
train_data = [('I love apples', 'fruit'),('Dogs are cute', 'animal'),# 更多训练样本...
]# 训练分类模型
model_classifier = FastText(size=100)
model_classifier.build_vocab(train_data)
model_classifier.train(train_data, total_examples=model_classifier.corpus_count, epochs=10)# 在测试集上评估模型性能
test_data = ['I like dogs','I enjoy eating fruit'
]for text in test_data:prediction = model_classifier.predict([text])[0][0]print(f'Text: {text} -> Prediction: {prediction}')

        总结:FastText是一种基于子词嵌入与N-gram特征的词嵌入技术。它通过将词语分解为子词,并将子词的信息纳入到词向量模型中,提高了处理未登录词和稀有词的性能。FastText可以使用Skip-gram或CBOW进行训练,通过词语相似度和分类任务等评估模型的效果。

D. BERT

        BERT是一种基于Transformer模型的预训练语言表示模型。它在自然语言处理领域取得了巨大的成功,并广泛应用于文本分类、命名实体识别、问答系统等任务。

1. Transformer模型

        BERT的核心是基于Transformer模型的编码器。Transformer模型由多层的自注意力机制和前馈神经网络组成,能够处理输入序列中的长程依赖关系。自注意力机制允许模型在计算每个位置的表示时,同时参考整个输入序列的信息,而不仅仅是局部上下文。

2. Masked Language Model

        BERT的预训练过程包括训练一个Masked Language Model(MLM)。在训练阶段,输入的文本中的一些词语会被随机地遮蔽(用[MASK]标记替代)。模型的目标是根据上下文预测被遮蔽的词语。通过这种方式,BERT学习到了词语之间的上下文信息并能够更好地理解语境。

3. Next Sentence Prediction

        除了MLM,BERT还进行了Next Sentence Prediction(NSP)的预训练。NSP目标是预测两个句子是否是连续的,这对于处理自然语言推理和问答等任务非常有用。在预训练时,BERT模型接收两个句子作为输入,并通过判断它们是否在原始文本中是连续的来学习句子级别的关系。

        

        BERT的预训练过程包括多个阶段的训练和微调。预训练阶段使用大量无标签的文本数据进行训练,以学习通用的语言表示。微调阶段针对具体任务,使用带有标签的任务特定数据对BERT进行微调,以适应具体的任务需求。

以下是使用Hugging Face库进行BERT模型的加载和文本分类的示例代码:

from transformers import BertTokenizer, BertForSequenceClassification
import torch# 加载预训练的BERT模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')# 文本分类任务示例
text = "This is an example sentence."
encoded_input = tokenizer(text, padding=True, truncation=True, return_tensors='pt')
output = model(**encoded_input)logits = output.logits
predictions = torch.argmax(logits, dim=1)print(f"Input text: {text}")
print(f"Predicted label: {predictions.item()}")

        以上代码首先加载了预训练的BERT模型和对应的分词器。然后,我们可以使用分词器对输入文本进行分词和编码处理。接下来,将编码后的输入传递给BERT模型,并获得输出logits(用于多类别分类任务)。最后,使用argmax函数确定预测的标签。

总结:BERT是一种基于Transformer模型的预训练语言表示模型。它通过Masked Language Model和Next Sentence Prediction的预训练目标,学习到了词语和句子的上下文信息。BERT在自然语言处理任务中取得了显著的成果,并可以通过微调适应不同的具体任务需求。

V. Embedding技术的优势和挑战

A. 提高语义表示和语义相似度计算

        Embedding技术通过将文本或词语映射到一个低维向量空间中,能够提高语义表示的效果。传统的基于one-hot编码的表示方法无法捕捉语义信息,而Embedding技术可以将语言中的语义关系转化为向量空间中的几何关系,从而增强了对语义相关性的理解。例如,使用Word2Vec模型可以将词语嵌入到一个向量空间中,使得具有相似语义的词在向量空间中距离较近。这样的语义相似度计算可以应用于文本相似度比较、句子匹配等自然语言处理任务中,从而提高模型的性能。

B. 降维和节省存储空间

        Embedding技术可以将高维的离散表示(如词表)转换为低维的连续表示。通过将文本或词语映射到低维向量空间,可以大幅度降低表示的维度,从而减少模型的参数数量和计算复杂性。这对于在计算资源有限的情况下进行大规模文本处理非常有帮助。此外,由于低维连续表示可以进行更加紧凑的存储,Embedding技术可以节省存储空间,并提高模型的效率。

C. 语言差异和多义词带来的问题

        尽管Embedding技术具有很多优势,但也面临一些挑战。首先,不同语言之间存在语法、词汇和文化等方面的差异,这可能导致在跨语言任务中的Embedding表示难以对齐。其次,多义词是一个常见的问题。许多词语在不同的上下文中具有不同的含义,Embedding技术需要解决如何将这种多义性纳入到向量表示中的问题。此外,对于生僻词或特定领域的词汇,由于缺乏足够的训练数据,其Embedding表示可能不够准确或完整。

        为了应对这些挑战,研究人员提出了许多改进Embedding技术的方法。例如,通过多语言预训练模型,可以在多个语言之间共享语义信息,以改善跨语言的Embedding表示。对于多义词,可以采用上下文敏感的Embedding方法,根据上下文来确定词义。此外,还可以使用更大规模的训练数据和更复杂的模型来提高Embedding的质量。

        总结:Embedding技术在自然语言处理任务中具有许多优势,包括提高语义表示和语义相似度计算、降维和节省存储空间等。然而,Embedding技术也面临一些挑战,如语言差异和多义词问题。为应对这些挑战,研究者们提出了各种改进方法,并不断推动Embedding技术的发展。

相关参考文献列表:

  1. Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013). Distributed representations of words and phrases and their compositionality. Advances in neural information processing systems, 26, 3111-3119.

  2. Pennington, J., Socher, R., & Manning, C. D. (2014). GloVe: Global vectors for word representation. Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP), 1532-1543.

  3. Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), 4171-4186.

  4. Le, Q., & Mikolov, T. (2014). Distributed representations of sentences and documents. In International Conference on Machine Learning, 1188-1196.

  5. Arora, S., Liang, Y., & Ma, T. (2017). A simple but tough-to-beat baseline for sentence embeddings. In International conference on learning representations.

  6. Dai, Z., Yang, Z., Yang, Y., Carbonell, J. G., Le, Q. V., & Salakhutdinov, R. (2015). Document embedding with paragraph vectors. In Conference on Empirical Methods in Natural Language Processing, 70-79.

  7. Conneau, A., Kiela, D., Schwenk, H., Barrault, L., & Bordes, A. (2017). Supervised learning of universal sentence representations from natural language inference data. In Proceedings of the 2017 Conference on Empirical Methods in Natural Language Processing, 670-680.

  8. Kiros, R., Zhu, Y., Salakhutdinov, R., Zemel, R., Urtasun, R., Torralba, A., & Fidler, S. (2015). Skip-thought vectors. In Advances in neural information processing systems, 3294-3302.

  9. Bojanowski, P., Grave, E., Joulin, A., & Mikolov, T. (2017). Enriching word vectors with subword information. Transactions of the Association for Computational Linguistics, 5, 135-146.

  10. Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving language understanding by generative pre-training. OpenAI Blog.

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

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

相关文章

数据库技术与应用——目录篇

数据库技术与应用目录 文章目录 第1章 数据库基础知识数据库技术的概念数据管理的发展数据库的体系结构数据库管理系统常用的数据库管理系统介绍 第2章 信息得三种世界与数据模型信息的三种世界及其描述数据模型 第3章 关系模型关系模型的由来关系数据库的结构关系代数关系演算…

Flutter Notification (通知)

通知可以用来监听事件&#xff0c;用来刷新页面&#xff0c;先看通知的源码&#xff1a; class NotificationListener<T extends Notification> extends ProxyWidget {/// Creates a widget that listens for notifications.const NotificationListener({super.key,requ…

【代码】Python实现Excel数据合并

文章目录 概要整体架构流程代码小结 概要 通过遍历指定目录下的多个Excel文件&#xff0c;将它们的数据合并到一个新的Excel文件中&#xff0c;实现Excel数据合并的功能。 整体架构流程 代码的主要流程如下&#xff1a; 导入所需的库&#xff1a;os用于文件路径操作&#x…

pix2pix-gan医疗图像分割迁移

pix2pix-gan做医学图像合成的时候&#xff0c;如果把nii数据转成png格式会损失很多信息&#xff0c;以为png格式图像的灰度值有256阶&#xff0c;因此直接使用nii的医学图像做输入会更好一点。 但是Pythorch中的Dataloader是不能直接读取nii图像的&#xff0c;因此加一个Creat…

Linux命令----modprobe命令详解

【原文链接】Linux命令----modprobe命令详解 一、modprobe命令的作用 加载内核模块&#xff1a; 使用modprobe命令可以加载指定的内核模块到运行中的内核中。加载内核模块可以在运行时添加新的功能、驱动程序或修改内核行为。 解决模块依赖关系&#xff1a; modprobe命令可以…

excel的导出

excel的导出是开发常见的功能&#xff0c;但是excel得到处都是谁导出呢&#xff1f; 一般情况excel都是由后端导出生成blob格式返给前端&#xff0c;前端进行下载&#xff0c;当然前端也可以自己利用数据进行excel导出&#xff0c;这篇文章将介绍前端导出和后端导出的一些插件…

基于OpenCV的人脸对齐步骤详解及源码实现

目录 1. 前言2. 人脸对齐基本原理与步骤3. 人脸对齐代码实现 1. 前言 在做人脸识别的时候&#xff0c;前期的数据处理过程通常会遇到一个问题&#xff0c;需要将各种人脸从不同尺寸的图像中截取出来&#xff0c;再进行人脸对齐操作&#xff1a;即将人脸截取出来并将倾斜的人脸…

大数据是什么意思?现在学习还来得及么

数据的方向的切入是全方位的&#xff0c;基础语言的学习只是很小的一个方面&#xff0c;编程落实到最后到编程思想&#xff0c;有了指导思想学习起来就能方便很多。 随着互联网大潮走向低谷&#xff0c;同时传统企业纷纷进行数字化转型&#xff0c;基本各个公司都在考虑如何进…

QT学习之旅 - QThread多线程

文章目录 首先是主线程 其次是一个程序 通过一个QThread来放入程序 进阶一点: 手动开启关闭线程俩个线程 其实QT中的thread(线程)是很容易的 首先是主线程 #include "mainwindow.h" #include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWin…

【图像处理】经营您的第一个U-Net以进行图像分割

一、说明 AI厨师们&#xff0c;今天您将学习如何准备计算机视觉中最重要的食谱之一&#xff1a;U-Net。本文将叙述&#xff1a;1语义与实例分割&#xff0c;2 图像分割中还使用了其他损失&#xff0c;例如Jaccard损失&#xff0c;焦点损失&#xff1b;3 如果2D图像分割对您来说…

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

【SpringBoot】SpringBoot的自动配置源码解析

文章目录 1. SpringBoot的自动配置概念2. SpringBoot自动配置的原理3. EnableAutoConfiguration4. 常用的Conditional注解 1. SpringBoot的自动配置概念 SpringBoot相对于SSM来说&#xff0c;主要的优点就是简化了配置&#xff0c;不再需要像SSM哪有写一堆的XML配置&#xff0…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042

文章目录 Django < 2.0.8 任意URL跳转漏洞&#xff08;CVE-2018-14574&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Trunc(kind) and Extract(lookup_name) SQL注入漏洞&#xff08;CVE-2022-34265&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Qu…

pyqt 实现计算器

1.由designer设计实现的计算器类 文件名为&#xff1a;untitled.py # -*- coding: utf-8 -*-# Form implementation generated from reading ui file untitled.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will b…

03-MySQL-基础篇-SQL之DDL语句

SQL之DDL语句 前言DDL数据库操作表操作查询操作数据类型案例修改删除 前言 本篇来学习下SQL中的DDL语句 DDL 全称Data Definition Language&#xff0c;数据定义语言&#xff0c;用来定义数据库对象(数据库&#xff0c;表&#xff0c;字段) 数据库操作 查询所有数据库 sh…

docker 发布镜像到阿里云容器镜像

1.登录阿里云 2.创建个人版实例&#xff0c;这里需要设置密码&#xff0c;一定要保存好 3.创建一个镜像仓库&#xff0c;个人实例最多创建3个 4.创建命名空间&#xff0c;个人实例最多300个 5.发布镜像到阿里云容器镜像 1、linux登录阿里云docker容器镜像 $ docker login --us…

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法&#xff0c;考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为&#xff0c;对考生的行为进行自动抓拍&#xff0c;并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…

Clion 配置Mingw64的 c++开发环境

1、Mingw64的安装与环境变量的配置 Mingw64文件下载 Mingw64下载地址&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ posix相比win32拥有C 11多线程特性&#xff0c;sjlj和seh对应异常处理特性&#xff0c;sjlj较为古老&#xff0c;所以选择seh 配置环境变…

Windows git bash输入vim报错,不能使用vim-plug插件管理器

Windows系统下的git bash在安装时自带了默认的vim&#xff0c;我自己也下了个gvim&#xff0c;并且配置了.vimrc&#xff0c;其中使用了vim-plug管理nerdtree这些插件。但是在bash中vim <file>时&#xff0c;就会蹦出来几行报错&#xff1a; 处理 /c/Users/<username…