第五篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:详细解读pyttsx3的`preprocess_text`函数文本预处理。

传奇开心果短博文系列

  • 系列短博文目录
    • Python文本和语音相互转换库技术点案例示例系列
  • 短博文目录
    • 前言
    • 一、pyttsx3的`preprocess_text`函数文本预处理基本用法示例代码
    • 二、实现更复杂的文本预处理逻辑示例代码
    • 三、去除停用词、词干提取示例代码
    • 四、词形还原、拼写纠正示例代码
    • 五、实体识别、去除HTML标签示例代码
    • 六、去除URL链接、处理缩写词示例代码
    • 七、处理特定的符号、处理特定的文本模式示例代码
    • 八、归纳总结

系列短博文目录

Python文本和语音相互转换库技术点案例示例系列

短博文目录

前言

在这里插入图片描述
在这里插入图片描述pyttsx3在文本转换语音之前,首先要开展系列步骤的文本预处理工作。
这些预处理步骤可以在使用pyttsx3之前应用于文本,以提高转换结果的质量和可读性。预处理后的文本更干净、准确,可以更好地用于语音转换。pyttsx3主要使用preprocess_text函数开展文本预处理。

一、pyttsx3的preprocess_text函数文本预处理基本用法示例代码

在这里插入图片描述
在这里插入图片描述下面是一个使用pyttsx3库进行文本预处理基本用法的示例代码:

import pyttsx3def preprocess_text(text):# 移除文本中的特殊字符processed_text = ''.join(e for e in text if e.isalnum() or e.isspace())# 将文本转换为小写processed_text = processed_text.lower()return processed_text# 创建一个TTS引擎
engine = pyttsx3.init()# 设置预处理文本
text = "Hello, World! This is a text-to-speech example."# 预处理文本
processed_text = preprocess_text(text)# 使用TTS引擎朗读预处理后的文本
engine.say(processed_text)
engine.runAndWait()

在上面的示例代码中,preprocess_text函数用于对文本进行预处理。它首先移除文本中的特殊字符,然后将文本转换为小写。这样可以确保文本在朗读之前被正确处理。

然后,我们使用pyttsx3.init()方法初始化一个TTS引擎。接下来,我们设置要朗读的文本,并将其传递给preprocess_text函数进行预处理。最后,使用engine.say()方法将预处理后的文本传递给TTS引擎进行朗读,然后使用engine.runAndWait()方法等待朗读完成。

你可以根据自己的需求修改preprocess_text函数,以实现更复杂的文本预处理逻辑。

二、实现更复杂的文本预处理逻辑示例代码

在这里插入图片描述在这里插入图片描述
下面是一个修改后的preprocess_text函数,实现了更复杂的文本预处理逻辑:

import redef preprocess_text(text):# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)return processed_text

在这个修改后的函数中,我们使用了re模块的正则表达式功能。首先,我们使用re.sub()函数和正则表达式[^\w\s]来移除文本中的特殊字符和标点符号。这个正则表达式表示匹配除了字母、数字、下划线和空格之外的任何字符。然后,我们将文本转换为小写,并使用re.sub()函数和正则表达式\s+来移除多余的空格,将连续的多个空格替换为一个空格。

这样,预处理后的文本将只包含小写字母、数字、下划线和单个空格,没有特殊字符和多余的空格。你可以根据自己的需求进一步修改这个函数,添加其他的预处理步骤,例如去除停用词、词干提取等。

三、去除停用词、词干提取示例代码

在这里插入图片描述
在这里插入图片描述当涉及到去除停用词和词干提取时,可以使用一些自然语言处理库,如nltk(Natural Language Toolkit)来实现。下面是一个修改后的preprocess_text函数,包括去除停用词和词干提取的示例代码:

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import PorterStemmerdef preprocess_text(text):# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)# 去除停用词stop_words = set(stopwords.words('english'))processed_text = ' '.join(word for word in processed_text.split() if word not in stop_words)# 词干提取stemmer = PorterStemmer()processed_text = ' '.join(stemmer.stem(word) for word in processed_text.split())return processed_text

在这个修改后的函数中,我们首先导入了nltk库,并从nltk.corpus模块导入了停用词和从nltk.stem模块导入了词干提取器PorterStemmer

然后,在preprocess_text函数中,我们创建了一个停用词集合stop_words,使用set(stopwords.words('english'))加载英文停用词。接下来,我们使用列表推导式和条件判断语句,将不在停用词集合中的单词保留下来,形成一个经过去除停用词的文本。

最后,我们创建了一个词干提取器stemmer,使用PorterStemmer()初始化。然后,使用列表推导式和词干提取器将文本中的每个单词提取出词干,并重新组合成一个经过词干提取的文本。

这样,预处理后的文本将不包含停用词,并且每个单词都被提取为其词干形式。你可以根据自己的需求进一步修改这个函数,添加其他的预处理步骤,如词形还原、拼写纠正等。

四、词形还原、拼写纠正示例代码

在这里插入图片描述
在这里插入图片描述要进行词形还原和拼写纠正,我们可以使用nltk库中的WordNetLemmatizerspell模块。下面是一个修改后的preprocess_text函数,包括词形还原和拼写纠正的示例代码:

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk import download
from spellchecker import SpellCheckerdef preprocess_text(text):# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)# 去除停用词stop_words = set(stopwords.words('english'))processed_text = ' '.join(word for word in processed_text.split() if word not in stop_words)# 词形还原download('averaged_perceptron_tagger')download('wordnet')lemmatizer = WordNetLemmatizer()tokens = word_tokenize(processed_text)tagged_tokens = pos_tag(tokens)processed_text = ' '.join(lemmatizer.lemmatize(word, tag) for word, tag in tagged_tokens)# 拼写纠正spell = SpellChecker()processed_text = ' '.join(spell.correction(word) for word in processed_text.split())return processed_text

在这个修改后的函数中,我们首先导入了nltk库的WordNetLemmatizerword_tokenizepos_tag模块,以及spellchecker库的SpellChecker模块。

然后,在preprocess_text函数中,我们下载了nltk库的averaged_perceptron_taggerwordnet资源,用于词形还原。

接下来,我们创建了一个词形还原器lemmatizer,使用WordNetLemmatizer()初始化。然后,我们使用word_tokenize函数将文本分词为单词列表,使用pos_tag函数为每个单词标记词性,然后使用列表推导式和词形还原器将每个单词还原为其原始形式,最后重新组合成一个经过词形还原的文本。

最后,我们创建了一个拼写纠正器spell,使用SpellChecker()初始化。然后,使用列表推导式和拼写纠正器对文本中的每个单词进行拼写纠正,并重新组合成一个经过拼写纠正的文本。

这样,预处理后的文本将进行词形还原和拼写纠正,以提高文本的质量和准确性。你可以根据自己的需求进一步修改这个函数,添加其他的预处理步骤,如实体识别、去除HTML标签等。

五、实体识别、去除HTML标签示例代码

在这里插入图片描述要进行实体识别和去除HTML标签,我们可以使用nltk库中的ne_chunkBeautifulSoup模块。下面是一个修改后的preprocess_text函数,包括实体识别和去除HTML标签的示例代码:

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk import ne_chunk
from nltk import download
from spellchecker import SpellChecker
from bs4 import BeautifulSoupdef preprocess_text(text):# 去除HTML标签processed_text = BeautifulSoup(text, "html.parser").get_text()# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', processed_text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)# 去除停用词stop_words = set(stopwords.words('english'))processed_text = ' '.join(word for word in processed_text.split() if word not in stop_words)# 词形还原download('averaged_perceptron_tagger')download('wordnet')lemmatizer = WordNetLemmatizer()tokens = word_tokenize(processed_text)tagged_tokens = pos_tag(tokens)processed_text = ' '.join(lemmatizer.lemmatize(word, tag) for word, tag in tagged_tokens)# 拼写纠正spell = SpellChecker()processed_text = ' '.join(spell.correction(word) for word in processed_text.split())# 实体识别tagged_tokens = pos_tag(word_tokenize(processed_text))processed_text = ' '.join(chunk.label() if hasattr(chunk, 'label') else chunk[0] for chunk in ne_chunk(tagged_tokens))return processed_text

在这个修改后的函数中,我们首先导入了nltk库的ne_chunk模块,以及BeautifulSoup模块来处理HTML标签。

然后,在preprocess_text函数中,我们使用BeautifulSoup模块的BeautifulSoup(text, "html.parser").get_text()方法去除文本中的HTML标签。

接下来,我们继续之前的步骤,包括移除特殊字符和标点符号、转换为小写、移除多余的空格、去除停用词、词形还原和拼写纠正。

最后,我们使用pos_tag函数将文本中的单词标记词性,然后使用ne_chunk函数进行实体识别。我们使用列表推导式和条件判断语句,将识别出的实体标签保留下来,形成一个经过实体识别的文本。

这样,预处理后的文本将进行实体识别和去除HTML标签,以进一步提高文本的质量和准确性。你可以根据自己的需求进一步修改这个函数,添加其他的预处理步骤,如去除URL链接、处理缩写词等。

六、去除URL链接、处理缩写词示例代码

在这里插入图片描述要去除URL链接和处理缩写词,我们可以使用正则表达式来匹配和替换文本中的URL链接,以及使用一个缩写词词典来进行缩写词的替换。下面是一个修改后的preprocess_text函数,包括去除URL链接和处理缩写词的示例代码:

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk import ne_chunk
from nltk import download
from spellchecker import SpellChecker
from bs4 import BeautifulSoupdef preprocess_text(text):# 去除HTML标签processed_text = BeautifulSoup(text, "html.parser").get_text()# 去除URL链接processed_text = re.sub(r'http\S+|www.\S+', '', processed_text)# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', processed_text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)# 去除停用词stop_words = set(stopwords.words('english'))processed_text = ' '.join(word for word in processed_text.split() if word not in stop_words)# 处理缩写词abbreviations = {"can't": "cannot","won't": "will not","it's": "it is",# 添加其他缩写词和对应的替换}processed_text = ' '.join(abbreviations.get(word, word) for word in processed_text.split())# 词形还原download('averaged_perceptron_tagger')download('wordnet')lemmatizer = WordNetLemmatizer()tokens = word_tokenize(processed_text)tagged_tokens = pos_tag(tokens)processed_text = ' '.join(lemmatizer.lemmatize(word, tag) for word, tag in tagged_tokens)# 拼写纠正spell = SpellChecker()processed_text = ' '.join(spell.correction(word) for word in processed_text.split())# 实体识别tagged_tokens = pos_tag(word_tokenize(processed_text))processed_text = ' '.join(chunk.label() if hasattr(chunk, 'label') else chunk[0] for chunk in ne_chunk(tagged_tokens))return processed_text

在这个修改后的函数中,我们首先导入了re模块,用于处理正则表达式匹配和替换。

然后,在preprocess_text函数中,我们使用re.sub函数和正则表达式r'http\S+|www.\S+'来匹配和替换文本中的URL链接。这样,我们可以将URL链接从文本中去除。

接下来,我们继续之前的步骤,包括去除HTML标签、移除特殊字符和标点符号、转换为小写、移除多余的空格、去除停用词、处理缩写词、词形还原和拼写纠正。

在处理缩写词时,我们创建了一个缩写词词典abbreviations,其中包含了一些常见的缩写词和对应的替换。你可以根据需要添加其他的缩写词和替换到这个词典中。

最后,我们使用pos_tag函数将文本中的单词标记词性,然后使用ne_chunk函数进行实体识别。我们使用列表推导式和条件判断语句,将识别出的实体标签保留下来,形成一个经过实体识别的文本。

这样,预处理后的文本将去除URL链接、处理缩写词,并进行其他的预处理步骤,以进一步提高文本的质量和准确性。你可以根据自己的需求进一步修改这个函数,添加其他的预处理步骤,如处理特定的符号、处理特定的文本模式等。

七、处理特定的符号、处理特定的文本模式示例代码

在这里插入图片描述根据你的需求,你可以进一步修改preprocess_text函数,添加其他的预处理步骤,如处理特定的符号、处理特定的文本模式等。下面是一个示例代码,包括处理特定符号和处理特定文本模式的预处理步骤:

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk import ne_chunk
from nltk import download
from spellchecker import SpellChecker
from bs4 import BeautifulSoupdef preprocess_text(text):# 去除HTML标签processed_text = BeautifulSoup(text, "html.parser").get_text()# 去除URL链接processed_text = re.sub(r'http\S+|www.\S+', '', processed_text)# 移除文本中的特殊字符和标点符号processed_text = re.sub(r'[^\w\s]', '', processed_text)# 处理特定符号processed_text = re.sub(r'\$', ' dollar ', processed_text)processed_text = re.sub(r'%', ' percent ', processed_text)# 将文本转换为小写processed_text = processed_text.lower()# 移除多余的空格processed_text = re.sub(r'\s+', ' ', processed_text)# 去除停用词stop_words = set(stopwords.words('english'))processed_text = ' '.join(word for word in processed_text.split() if word not in stop_words)# 处理缩写词abbreviations = {"can't": "cannot","won't": "will not","it's": "it is",# 添加其他缩写词和对应的替换}processed_text = ' '.join(abbreviations.get(word, word) for word in processed_text.split())# 词形还原download('averaged_perceptron_tagger')download('wordnet')lemmatizer = WordNetLemmatizer()tokens = word_tokenize(processed_text)tagged_tokens = pos_tag(tokens)processed_text = ' '.join(lemmatizer.lemmatize(word, tag) for word, tag in tagged_tokens)# 拼写纠正spell = SpellChecker()processed_text = ' '.join(spell.correction(word) for word in processed_text.split())# 实体识别tagged_tokens = pos_tag(word_tokenize(processed_text))
processed_text = ' '.join(chunk.label() if hasattr(chunk, 'label') else chunk[0] for chunk in ne_chunk(tagged_tokens))# 处理特定文本模式# 示例:将日期格式统一为YYYY-MM-DDprocessed_text = re.sub(r'\b(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})\b', r'\3-\1-\2', processed_text)# 示例:将电话号码格式统一为xxx-xxx-xxxxprocessed_text = re.sub(r'\b(\d{3})[ -]?(\d{3})[ -]?(\d{4})\b', r'\1-\2-\3', processed_text)return processed_text

在这个示例代码中,我们添加了两个处理特定文本模式的预处理步骤:

  1. 将日期格式统一为YYYY-MM-DD:使用正则表达式\b(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})\b匹配日期格式,并使用替换模式\3-\1-\2将日期格式统一为YYYY-MM-DD。

  2. 将电话号码格式统一为xxx-xxx-xxxx:使用正则表达式\b(\d{3})[ -]?(\d{3})[ -]?(\d{4})\b匹配电话号码格式,并使用替换模式\1-\2-\3将电话号码格式统一为xxx-xxx-xxxx。

八、归纳总结

在这里插入图片描述下面是对pyttsx3中的preprocess_text函数进行归纳总结的知识点:

  1. HTML标签去除:使用BeautifulSoup库去除文本中的HTML标签,以确保纯文本的输入。

  2. URL链接去除:使用正则表达式re.sub函数去除文本中的URL链接。

  3. 特殊字符和标点符号去除:使用正则表达式re.sub函数去除文本中的特殊字符和标点符号。

  4. 特定符号处理:使用正则表达式re.sub函数或字符串替换操作,处理特定的符号,如将$符号替换为单词dollar,将%符号替换为单词percent,将@符号替换为单词at等。

  5. 文本转换为小写:使用str.lower方法将文本转换为小写,以统一大小写格式。

  6. 多余空格移除:使用正则表达式re.sub函数去除文本中的多余空格。

  7. 停用词去除:使用NLTK库的stopwords模块获取停用词列表,将文本中的停用词去除。

  8. 缩写词处理:定义一个包含缩写词和对应替换的字典,将文本中的缩写词替换为对应的全写形式。

  9. 词形还原:使用NLTK库的WordNetLemmatizer词形还原器,对文本中的单词进行词形还原处理。

  10. 拼写纠正:使用spellchecker库的SpellChecker类,对文本中的拼写错误进行纠正。

  11. 实体识别:使用NLTK库的ne_chunk函数对文本中的实体进行识别,例如人名、地名等。

  12. 特定文本模式处理:使用正则表达式re.sub函数,处理特定的文本模式,例如统一日期格式、电话号码格式等。

在这里插入图片描述这些预处理步骤可以根据需要进行选择和修改,以适应特定的应用场景和文本数据。预处理后的文本更干净、准确,可以更好地用于后续的语音转换。

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

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

相关文章

代码随想录算法训练营第57天 | 1143.最长公共子序列 1035.不相交的线 53.最大子序和

最长公共子序列 dp[i][j] 表示字符串1中 [0, i-1] 子串与字符串2中 [0, j-1] 子串之间的最长公共子序列长度。注意这里并不要求公共子序列一定以下标 i-1 或 j-1 结尾。因为这里的公共子序列不必须连续,这样定义可以使得递推方便一些。 当进行遍历递推时&#xff0c…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展,数字化转型已经成为企业转型升级的必由之路。而在数字化转型中,三防平板作为一种重要的工具,可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

Web自动化测试基础篇

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、目的 web自动化测试作为软件自动化测试领域中绕不过去的一…

shopify如何在元字段中使用元对象

在Shopify中,您可以使用元字段(Metafields)来存储和管理自定义的附加数据。元字段允许您在产品、变体、订单和其他实体中添加额外的信息,以满足特定的业务需求。而元对象(Metaobject)是指在元字段中存储的实…

Cell |从实验室到田间,还有多远?

期刊:Cell 时间:2023年8月 植物微生物群是指植物表面、细胞间隙、器官内寄生的细菌、真菌、病毒、古菌群落。植物与微生物群的互作在植物生理、生态和进化过程中扮演重要角色。有益微生物定殖植物,可以持续对植物生产力产生表型效应&…

Django学习记录03——员工部门案例

1、项目初始化 1.1 项目创建 1.2 APP的创建 1.2.1 方法一 命令配置 python manage.py startapp app011.2.2 方法二 Pycharm配置 在Django Structure 中创建APP 2.设计表结构 2.1 表结构 注意: 1.员工表与部门表关联时id关联 节省存储,但是查找耗时…

2024信息工程、软件与计算机工程国际会议(ICIESCE2024)

2024信息工程、软件与计算机工程国际会议(ICIESCE2024) 会议简介 随着互联网的不断创新,信息工程、软件和计算机工程在各个领域得到了广泛应用。为了为来自世界各地的专家学者提供一个分享通信和计算机工程领域研究成果的平台,2024年信息工…

Leetcode刷题笔记题解(C++):203. 移除链表元素

思路:不同的情况出现了,就是第一个节点要是为等于val的节点,可以新建一个节点,并next指向head,这样就可以遍历新的链表来删除节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* L…

Java最全面试总结——5. MyBatis篇

1、什么是MyBatis (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直…

深度解析Sora的核心技术

Sora要解决的核心问题 Sora面临的挑战是将不同类型的视觉信息,如视频、文本、图像和声音等,整合为一种共同的表征形式。这种转换是实现统一训练过程的关键,旨在将各类数据集中到一个训练框架中,以便于进行大规模的统一学习。简而…

rime 输入²⁰²⁴/₀₂.₂₁ 格式日期

如何书写一个日期,例如 2024/02/21 星期三、Feb. 21th, 2024、20240221、甲辰(龙)年正月十二,现在我们介绍一种新的日期格式 ⁰⁴/₀₂.₂₁ 的输入方法。 上标字符 在rime输入法中,我们可以使用符号/来启动特殊符号的输入,例如我们可以通过/sb来输入上标字符,如下👇:…

WebRTC最新版报错解决:city.wav:missing and no known rule to make it (二十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

CheatEngine基础进阶篇

我们在上一篇文章里说了CE的安装,汉化以及最基础最基础的值扫描和修改方法,当然很多游戏不能通过这些简单的手段就能达到修改值的效果,因此我们还需要掌握以下几个重要的知识点: 指针寻址 上一步阐述了如何使用"代码查找"功能对付变化位置的数据地址,但这种方法…

鸿蒙应用开发,比 React 体验更好

痛点 一直以来,使用 HTML CSS 来表达 UI 结构,都有一个若隐若现的痛点。痛点来源主要体现在 DOM 结构的语义表现力不足。 例如这样一段代码,我们能够很清晰的知道 DOM 结构是怎么样的,但是其具体的布局结构方式和特性就不知道了…

Redis面试题关于持久化的问题

什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么? 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。 Redis 提供了两种持久化方式:RDB(默认) 和AOF RDB: rdb是Red…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…

域名 SSL 证书信息解析 API 数据接口

域名 SSL 证书信息解析 API 数据接口 网络工具,提供域名 SSL 证书信息解析,多信息查询,毫秒级响应。 1. 产品功能 提供域名 SSL 证书信息解析;最完整 SSL 属性信息解析;支持多种元素信息抽取,包括主题的可…

Sample Pairing(ICLR 2018)

paper:Data Augmentation by Pairing Samples for Images Classification 本文的创新点 本文提出了一种新的应用于图像分类的数据增强方法SamplePairing,这种简单的数据增强技术显著提高了所有测试的数据集的分类精度。此外当训练集中的样本数量非常少…

Web前端3D JS框架和库 整理

在WebGL库和SVG/Canvas元素的支持下,JavaScript变得惊人的强大。几乎可以为网络构建任何东西,包括基于浏览器的游戏和本地应用,许多最新的突破性功能都在3D上运行。 为此,「数维图小编」整理了19个交互式3D Javascript库和框架&am…

NestJS入门6:日志中间件

前文参考: NestJS入门1 NestJS入门2:创建模块 NestJS入门3:不同请求方式前后端写法 NestJS入门4:MySQL typeorm 增删改查 NestJS入门5:加入Swagger 1. 安装 nest g middleware logger middleware​ ​ ​ 2. lo…