- LocCloud
-
1、一种解释
token:令牌
tokenize:令牌化
tokenizer:令牌解析器
2、另一种翻译是:token可以翻译为“标记”,tokenize可以翻译为“标记解析”或“解析标记”,tokenizer可以翻译为“标记解析器”。
在编写词法分析器(Lexer)或语法分析器(Parser)的时候,除了Lexer和Parser这两个词会经常使用外,tokenize和tokenizer也会经常出现,基本上所有涉及到词法解析的源码都会用到tokenize。
在邱仲潘译的《Mastering Java 2》有这儿一段:
StreamTokenizer类根据用户定义的规则,从输入流中提取可识别的子串和标记符号,这个过程称为令牌化 ([i]tokenizing[/i]),因为流简化为了令牌符号。令牌([i]token[/i])通常代表关键字、变量名、字符串、直接量和大括号等 语法标点。
- wpBeta
-
在编写词法分析器(Lexer)或语法分析器(Parser)的时候,除了Lexer和Parser这两个词会经常使用外,tokenize和tokenizer也会经常出现,基本上所有涉及到词法解析的源码都会用到tokenize。
它的命名来源于使用英文的开发者,否则让我这个习惯使用中文的人去想这个命名,我可能会用其它简单的词来代替,不会这么形象化,所以啊,语言文化的不同,可能会导致思维方式的不同啊,所以中国人的思维方式和西方人的思维方式肯定是不同的,让他们来理解我们的语言可能也很费解。
不管怎么说,好的东西是应该学习和借鉴的,tokenize这个词使用得如此频繁,肯定有它的意义,那到底这个词怎么翻译?怎么理解?在邱仲潘译的《Mastering Java 2》有这儿一段:
StreamTokenizer类根据用户定义的规则,从输入流中提取可识别的子串和标记符号,这个过程称为令牌化 ([i]tokenizing[/i]),因为流简化为了令牌符号。令牌([i]token[/i])通常代表关键字、变量名、字符串、直接量和大括号等 语法标点。
参考邱仲潘的这段译文,可以这样翻译:
token:令牌
tokenize:令牌化
tokenizer:令牌解析器
而我看到的另一种翻译是:token可以翻译为“标记”,tokenize可以翻译为“标记解析”或“解析标记”,tokenizer可以翻译为“标记解析器”
我的理解是tokenize是负责把代码解析为一个个的“串”,而Paser是根据这些“串”的前后序列关系来生成相应的语法结构。用令牌好像更形象一些,不过总觉得听起来很生硬,而翻译成“标记”,范围又狭窄了一些。我也找不到一个更适合的词来翻译了,总之理解意思最重要。
不知道各位是怎么理解的,怎么翻译的。
怎么理解token,tokenize,tokenizer?
1、一种解释token:令牌tokenize:令牌化tokenizer:令牌解析器2、另一种翻译是:token可以翻译为“标记”,tokenize可以翻译为“标记解析”或“解析标记”,tokenizer可以翻译为“标记解析器”。在编写词法分析器(Lexer)或语法分析器(Parser)的时候,除了Lexer和Parser这两个词会经常使用外,tokenize和tokenizer也会经常出现,基本上所有涉及到词法解析的源码都会用到tokenize。在邱仲潘译的《Mastering Java 2》有这儿一段:StreamTokenizer类根据用户定义的规则,从输入流中提取可识别的子串和标记符号,这个过程称为令牌化 ([i]tokenizing[/i]),因为流简化为了令牌符号。令牌([i]token[/i])通常代表关键字、变量名、字符串、直接量和大括号等 语法标点。2023-07-28 03:54:361
Jenkins 失败: Cannot invoke method tokenize() on null object
tokenize(arg)传递的参数 arg == null 判断arg == null 时,为其赋默认值,或不能调用tokenize。2023-07-28 03:54:431
Python分割字符串 有无和c++中的tokenizer同样功能的用法?
回楼主。在tokenize里,这里有英文的参考文档import tokenizeimport StringIOs = StringIO.StringIO( "21.3e-5*-.1234/81.7" )g = tokenize.generate_tokens( s.readline )for tokenum, tokeval, _, _, _ in g: if tokenum == tokenize.NUMBER and "." in tokeval: result.extend( [( tokenize.NAME, "Decimal" ), ( tokenize.OP, "(" ), ( tokenize.STRING, repr( tokeval ) ), ( tokenize.OP, ")" )] ) else: result.append( ( tokenum, tokeval ) )print result这是我临时照抄的一个例子2023-07-28 03:54:512
代码设计完成hadoop单词计算功能是什么?
Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的并行计算。它以分布式存储和分布式计算的方式来处理数据,并通过将数据分割为多个块并在多个计算节点上并行处理来提高计算速度和效率。在Hadoop中实现单词计数功能可以通过以下步骤完成:1. 数据准备:将待处理的文本数据存储在Hadoop分布式文件系统(HDFS)中,确保数据在HDFS上的可访问性。2. Map阶段:编写Map函数,该函数将文本数据作为输入,并将其分割为单词(tokenize)。每个单词作为键,值为1,表示出现一次。Map函数将每个键值对输出为中间结果。3. Shuffle和Sort阶段:Hadoop框架会自动对Map输出的键值对进行分区、排序和合并操作,以便将相同的键值对发送到同一个Reduce任务进行处理。4. Reduce阶段:编写Reduce函数,该函数接收相同键的一组值,并将这些值相加以获得单词的总计数。Reduce函数将每个单词和对应的总计数输出为最终结果。5. 输出结果:将Reduce阶段得到的最终结果存储在HDFS上,或者输出到其他目标,如数据库、文件等。需要注意的是,以上步骤仅是实现Hadoop中的基本单词计数功能的概述,具体的实现细节会涉及到编程语言选择(如Java)、Hadoop框架的API调用以及适当的配置和部署。总的来说,使用Hadoop实现单词计数功能可以充分利用分布式计算的优势,加快数据处理速度,并且具有良好的扩展性和容错性,适用于处理大规模数据集的场景。2023-07-28 03:54:581
如何用 Python 中的 NLTK 对中文进行分析和处理
一、NLTK进行分词用到的函数:nltk.sent_tokenize(text) #对文本按照句子进行分割nltk.word_tokenize(sent) #对句子进行分词二、NLTK进行词性标注用到的函数:nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注三、NLTK进行命名实体识别(NER)用到的函数:nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。四、句法分析nltk没有好的parser,推荐使用stanfordparser但是nltk有很好的树类,该类用list实现可以利用stanfordparser的输出构建一棵python的句法树2023-07-28 03:55:091
torchtext 用法
官方文档: torchtext包含两部分: 现在torchtext.data,torchtext.dataset,torchtext.vocab都放在torchtext.legacy当中了。 常见用法 TEXT = data.Field(tokenize="spacy",tokenizer_language="en_core_web_sm", dtype = torch.float) TEXT = data.Field(batch_first=True, eos_token="<eos>") self.TEXT = data.Field(init_token="<start>", eos_token="<eos>", lower=True, tokenize="spacy", fix_length=16) self.LABEL = data.Field(sequential=False, unk_token=None)2023-07-28 03:55:181
2020-02-14
训练回归模型所需要的信息包含-数据、模型、损失函数、优化函数(梯度下降算法)。 step 1:对数据进行预处理使其可以fit到模型中 step 2:构建模型 step 3:选择损失函数(回归模型一般用mse)和优化函数 step 4:迭代训练模型中的参数,并进行预测 回归问题转化为分类问题,分类问题相当于回归的输出是多个值。 回归的输出是实值可通过softmax将其转化为对应的概率值,且数组中的最大值所处的index不变。 引用交叉墒损失函数-衡量两个概率分布差异的测量函数。化简得最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。 多个全连接层的stack等价于一个全连接层,问题的根源在于全连接层只是对数据做仿射变换,而多个仿射变换的叠加仍然是一个仿射变换。可以通过解决非线性函数来解决该问题。 非线性激活函数如下: 1、ReLU(rectified linear unit)函数提供了一个很简单的非线性变换。给定元素,该函数定义为 可以看出,ReLU函数只保留正数元素,并将负数元素清零。 2、Sigmoid函数可以将元素的值变换到0和1之间。 .导数在当输入为0时,sigmoid函数的导数达到最大值0.25;当输入越偏离0时,sigmoid函数的导数越接近0。 3、tanh(双曲正切)函数可以将元素的值变换到-1和1之间。 激活函数的选择 ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。 用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。 在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。 在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。 预处理通常包括四个步骤: 现有的分词工具,nltk.tokenize->word_tokenize;spacy n元语法,防止序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链。 元语法可能有哪些缺陷?参数空间过大,数据稀疏 两种采样方式,随机采样和相邻采样。对应的初始化方式不同。 卷积操作前w、h的长度 note: 为卷积后的w长度,p为padding长度,s为步长,k为卷积核大小。 卷积层与全连接层的对比: 二维卷积层经常用于处理图像,与此前的全连接层相比,它主要有两个优势: 一是全连接层把图像展平成一个向量,在输入图像上相邻的元素可能因为展平操作不再相邻,网络难以捕捉局部信息。而卷积层的设计,天然地具有提取局部信息的能力。 二是卷积层的参数量更少。 note:卷积核大小和图像大小相同时等价于全连接层。 训练误差:指模型在训练数据集上表现出的误差。 泛化误差:指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。 target:降低泛化误差。 数据集可分为:训练集、测试集、验证集(模型选择,例如-超参数)。 note:由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈,因此采用k折交叉验证。 欠拟合是模型无法得到较低的训练误差,我们将这一现象称作欠拟合; 过拟合是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合。 模型复杂度和训练数据集大小-过拟合及欠拟合的影响 模型复杂度越高越容易发生过拟合; 如果训练数据集中样本数过少,特别是比模型参数数量(按元素计)更少时,过拟合更容易发生。此外,泛化误差不会随训练数据集里样本数量增加而增大。因此,在计算资源允许的范围之内,我们通常希望训练数据集大一些。 过拟合的方法:正则化L1和L2及弹性网络,丢弃法-droupout。 当层数较多时,梯度的计算容易出现梯度消失或爆炸。 数据集可能存在的协变量、标签和概念偏移。 随着循环神经网络层数的增加可以出现梯度爆炸及消失,对应的使用梯度裁剪解决梯度爆炸。 困惑度是对交叉熵损失函数做指数运算后得到的值,使用它来对语言模型进行判定。特别地, 1、最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1; 2、最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷; 3、基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。 encoder:输入到隐藏状态 decoder:隐藏状态到输出 在训练时,将decoder的输出不作为它的属于。 可以关注到任意长度的字符信息。 有两种实现方式:点方式和多层感知器方式 Transformer同样基于编码器-解码器架构,其区别主要在于以下三点: Transformer blocks:将seq2seq模型重的循环网络替换为了Transformer Blocks,该模块包含一个多头注意力层(Multi-head Attention Layers)以及两个position-wise feed-forward networks(FFN)。对于解码器来说,另一个多头注意力层被用于接受编码器的隐藏状态。 Add and norm:多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。 Position encoding:由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。 一共包含7层:十分类问题。 卷积6x28x28-平均池化6x14x14-卷积16x10x10-平均池化16x5x5-全连接120-全连接84-全连接10。 卷积神经网络就是含卷积层的网络。 LeNet交替使用卷积层和最大池化层后接全连接层来进行图像分类。 AlexNet 1×1卷积核作用 1.放缩通道数:通过控制卷积核的数量达到通道数的放缩。 2.增加非线性。1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性。 3.计算参数少 GoogLeNet2023-07-28 03:55:371
Python 2 和 Python 3 有哪些主要区别
1.性能Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。Py3.1性能比Py2.5慢15%,还有很大的提升空间。2.编码Py3.X源码文件默认使用utf-8编码,3. 语法1)去除了<>,全部改用!=2)去除``,全部改用repr()3)关键词加入as 和with,还有True,False,None4)整型除法返回浮点数,要得到整型结果,请使用//5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数7)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值 8)输入函数改变了,删除了raw_input,用input代替:9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了10)新式的8进制变量,相应地修改了oct()函数。11)增加了 2进制变量和bin()函数12)扩展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list对象和seq是可迭代的。13)新的super()。可以不给super()传参数,14)新的metaclass语法:15)支持class decorator。用法与函数decorator一样:4. 字符串和字节串1)现在字符串只有str一种类型,但它跟2.x版本的unicode几乎一样。2)关于字节串,请参阅“数据类型”的第2条目5.数据类型1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long2)新增了bytes类型,对应于2.X版本的八位串3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有dict.has_key(),用 in替代它吧6.面向对象1)引入抽象基类(Abstraact Base Classes,ABCs)。2)容器类和迭代器类被ABCs化,所以cellections模块里的类型比Py2.5多了很多。3)迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法4)增加了@abstractmethod和 @abstractproperty两个 decorator,编写抽象方法(属性)更加方便。7.异常1)所以异常都从 BaseException继承,并删除了StardardError2)去除了异常类的序列行为和.message属性3)用 raise Exception(args)代替 raise Exception, args语法4)捕获异常的语法改变,引入了as关键字来标识异常实例5)异常链,因为__context__在3.0a1版本中没有实现8.模块变动1)移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。2)移除了imageop模块3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块4)移除了bsddb模块(单独发布,可以从http://www.jcea.es/programacion/pybsddb.htm获取)5)移除了new模块6)os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下7)tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是tokenize.tokenize()9.其它1)xrange() 改名为range(),要想使用range()获得一个list,必须显式调用2)bytes对象不能hash,也不支持 b.lower()、b.strip()和b.split()方法,但对于后两者可以使用 b.strip(b" f")和b.split(b" ‘)来达到相同目的3)zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函数都被去除了,现在可以使用hasattr()来替换 callable(). 4)string.letters和相关的.lowercase和.uppercase被去除,请改用string.ascii_letters 等5)如果x < y的不能比较,抛出TypeError异常。2.x版本是返回伪随机布尔值的6)__getslice__系列成员被废弃。a[i:j]根据上下文转换为a.__getitem__(slice(I, j))或 __setitem__和__delitem__调用7)file类被废弃2023-07-28 03:55:461
1. jieba中文处理
jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。既然Jieba是以分词起家,我们自然要首先学习Jieba的中文分词功能。Jieba提供了三种分词模式: 在jieba分词中,最常用的分词函数有两个,分别是 cut 和 cut_for_search ,分别对应于“精确模式/全模式”和“搜索引擎模式”。 当然,两者的输入参数也不一样,cut函数的输入主要有三个,分别是: cut_for_search 函数主要有两个参数: 需要注意的是, cut 和 cut_for_search 返回的都是generator,如果想直接返回列表,需要使用 lcut 和 lcut_for_search 如果在一些特定场景中,需要使用一些特殊词汇进行分词,就需要加载自定义的分词词典: 其中,用户字典的格式为: 每一行表示一个单词,每行最多由三部分组成 如果只是少量词汇,可以使用 需要注意的是,如果没有给出词频和词性信息,在后续的处理中可能会造成一定的影响。 jieba提供了两种关键词提取算法,分别是TF-IDF以及TextRank 关于TF-IDF的原理,可以参考吴军老师的《数学之美》,里面给出了很详细的说明。本文只介绍利用TF-IDF算法提取关键词。 其中: TextRank的用法与extract_tags的函数定义完全一致 词性标注主要是在分词的基础上,对词的词性进行判别,在jieba中可以使用如下方式进行: 在jieba中采用将目标文档按行分割,对每一行采用一个Python进程进行分词处理,然后将结果归并到一起(有点类似于MapReduce)。据说目前尚不支持Windows,仅支持Linux和MacOS。 启动并行分词使用如下命令: 关闭并行分词使用如下命令: 使用tokenize函数后,会获得一个词语信息的元组,元组中的第一个元素是分词得到的结果,第二个元素是词的起始位置,第三个元素是词的终止位置。 除了本文介绍的jieba分词工具包以外,还有很多好用的中文分词工具,比如2023-07-28 03:55:541
Python文本处理工具都有哪些?
1、 NLTK — Natural Language Toolkit搞自然语言处理的同学应该没有人不知道NLTK吧,这儿也就不多说了。不过引荐两本书籍给刚刚触摸NLTK或许需求具体了解NLTK的同学: 一个是官方的《Natural Language Processing with Python》,以介绍NLTK里的功用用法为主,一起附带一些Python常识,一起国内陈涛同学友情翻译了一个中文版,这儿可以看到:引荐《用Python进行自然语言处理》中文翻译-NLTK配套书;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,这本书要深入一些,会涉及到NLTK的代码结构,一起会介绍怎么定制自己的语料和模型等,相当不错。2、 PatternPattern由比利时安特卫普大学CLiPS实验室出品,客观的说,Pattern不仅仅是一套文本处理东西,它更是一套web数据挖掘东西,囊括了数据抓取模块(包含Google, Twitter, 维基百科的API,以及爬虫和HTML剖析器),文本处理模块(词性标示,情感剖析等),机器学习模块(VSM, 聚类,SVM)以及可视化模块等,可以说,Pattern的这一整套逻辑也是这篇文章的组织逻辑,不过这儿我们暂时把Pattern放到文本处理部分。我个人首要使用的是它的英文处理模块Pattern.en, 有许多很不错的文本处理功用,包含基础的tokenize, 词性标示,语句切分,语法检查,拼写纠错,情感剖析,句法剖析等,相当不错。3、 TextBlob: Simplified Text ProcessingTextBlob是一个很有意思的Python文本处理东西包,它其实是根据上面两个Python东西包NLKT和Pattern做了封装(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),一起供给了许多文本处理功用的接口,包含词性标示,名词短语提取,情感剖析,文本分类,拼写检查等,甚至包含翻译和语言检测,不过这个是根据Google的API的,有调用次数约束。4、 MBSP for PythonMBSP与Pattern同源,同出自比利时安特卫普大学CLiPS实验室,供给了Word Tokenization, 语句切分,词性标示,Chunking, Lemmatization,句法剖析等根本的文本处理功用,感兴趣的同学可以重视。关于 Python文本处理工具都有哪些,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。2023-07-28 03:56:031
把一段字符串根据一个特定的字符标记切割成几个字符串,应该怎样做啊?
CString a("This&is&a&samle&!"); CString b; CStringArray sa; int curPos = 0; b = a.Tokenize("&", curPos); while(!b.IsEmpty()) { sa.Add(b); TRACE(_T("%s "), sa[sa.GetSize() - 1]); b = a.Tokenize("&", curPos); }2023-07-28 03:56:102
有关python自然语言处理的问题
看起来像是一个自定义的函数,是不是有一个python文件叫做 utils.py ?2023-07-28 03:56:301
关于MAYA,3D软件.
都有,maya就是纯3D软件但都是英文2023-07-28 03:56:382
关于python编译路径的一点问题
在compile.py前面加上import osimport sysif "" != os.path.dirname(sys.argv[0]): os.chdir(os.path.dirname(sys.argv[0]) + os.sep)2023-07-28 03:56:583
Python3.x和Python2.x的区别
一个是3.x 一个是2.x2023-07-28 03:57:095
python在使用pip安装wx模块时提示错误 安装语句 C:UsersAdministrator> pip install wx 错误提示如下
wx, pip安装不好使吧,下载一个编译好的win版本就可以了2023-07-28 03:57:251
如何在win7配置安装tesserocr所需要的leptonica-1.75.2系统环境?
网页链接2023-07-28 03:57:351
groovy字符串切割方法split无法切割.
如有字符串"hello.world",用"."去切割这个字符串,得到的结果却是空数组: 原因是split()是用正则去匹配切割字符串,.是正则的特殊符号,所以必须转义,用"."去切割: 另外,还可以用tokenize()方法去切割: spli()方法和tokenize()方法的对比可见如下url中的介绍: http://www.tothenew.com/blog/groovy-tokenize-vs-split/ 截图加注释如下:2023-07-28 03:57:421
安装APEX中出现的问题
ERROR: Command errored out with exit status 1: /home/msi-MS/anaconda3/envs/MiB/bin/python -u -c "import sys, setuptools, tokenize; sys.argv[0] = """""/tmp/pip-req-build-uz1tslz9/setup.py"""""; __file__="""""/tmp/pip-req-build-uz1tslz9/setup.py""""";f=getattr(tokenize, """""open""""", open)(__file__);code=f.read()().replace(""""" """"", """"" """"");f.close();exec(compile(code, __file__, """""exec"""""))" --cpp_ext --cuda_ext install --record /tmp/pip-record-gsky7629/install-record.txt --single-version-externally-managed --compile --install-headers /home/msi-MS/anaconda3/envs/MiB/include/python3.6m/apex Check the logs for full command output. Exception information: Traceback (most recent call last): File "/home/msi-MS/anaconda3/envs/MiB/lib/python3.6/site-packages/pip/_internal/req/req_install.py", line 851, in install req_description=str(self.req), File "/home/msi-MS/anaconda3/envs/MiB/lib/python3.6/site-packages/pip/_internal/operations/install/legacy.py", line 86, in install raise LegacyInstallFailure pip._internal.operations.install.legacy.LegacyInstallFailure 解决方法: 尝试更换更早版本的apex, 或者安装时使用如下命令2023-07-28 03:57:491
各位大神,关于python安装statsmodel的问题
应该安装numpy+mkl包,你大概只是安了numpy,可以pipfreeze看看,可以到这个上面找找网页链接,重新下这个包装下,再装statsmodels,安装顺序为numpy+mkl,再装scipy,最后statsmodels。2023-07-28 03:58:241
python安装adb的时候出错
http://www.microsoft.com/en-us/download/details.aspx?id=44266安装这个之后再试试2023-07-28 03:58:341
sto法的要素
近期的两个消息再次验证了STO(Securiry Token Offering)在逐渐升温,迅速从理论探讨走入公众视野。 第一个消息是电动汽车区块链公司EVAIO已与法拉第未来(以下简称:FF)、美国投资银行Stifel进行了接洽,EVAIO希望在三年内通过STO方式投资FF总计9亿美元,具体投资细节还未完全确定,不排除讲故事的可能性。相比于此前完成和正在进行中的项目,法拉第的量级和知名度显然超出了传统区块链的范畴。此前一向以敢想敢干、战略疯狂而闻名,并被称之为“中国版马斯克”的贾跃亭,拥抱全新的STO在情理之中,既是一种全新的选择也是大势所趋。其团队和合作方应该已经在商讨运作STO融资的种种细节工作。 第二个消息则是这个周末刚刚发生的,美国证券委员会(SEC)发布了“数字资产证券发行与交易声明”,对数字资产证券的发售和销售、投资数字资产证券、数字资产证券交易、交易所注册、经纪人经销商注册等给出了明确的指导意见。而在这个意见颁布之前一天,SEC还刚刚对CarrierEQ和Paragon Coin两家进行非法STO的美国公司处以总计50万美元的罚款,主要原因在于其违反了证券法相关规定,向非合格投资人发行代币。 事实上,今年以来,各种打着STO旗号的项目越来越多,但其实更多的是号称为STO的伪STO项目。那么,到底什么才是真正合格的STO项目,它完整的商业闭环应该是什么样子,又该如何打造一个合法合规的STO项目呢? 在我看来,STO本身包含了资产证券化+证券通证化两个属性,具备这两个属性是成为STO项目的必要条件;与此同时,项目的整个环节都需要合法合规,要有明确的现行法律作为依据,这是成为STO项目的充分条件,两大条件,缺一不可。 具体来说,项目方将现有的传统资产,如实体资产、股权、债权等等具有资产属性的标的物,通过区块链技术进行通证化(Tokenize),上链后的通证变为证券化通证,具备完整的证券属性。与此同时,项目必须符合相应的法律法规,也就是说,哪怕是完成了资产证券化和证券通证化的项目,如果不符合相应的法律法规,依然不能称之为真正的STO项目。 不仅如此,STO项目在完成资产证券化和证券通证化,并且合法合规之后,还需要有流动性,即发行和交易环节,这种流动性可以是现在具有的,也可以是未来可见的。有些国家的法律,项目发行只能面对合格的投资人或机构,在一定时期内(一年或者半年)需要进行锁定,才能进入二级市场,面对普通投资者。 对于任何资产而言,流动性是价值流通的保障,倘若只是单纯地完成资产证券化和证券通证化,而没有流动性或者看不到流动性的可能,那依然不能成为真正合格的STO项目。在我看来,一个合格的STO项目包含以下四个环节:前期战略规划及准备,法律及财务合规,证券的Token化以及ST的流通,四个环节递进关系、环环相扣,最终形成一个完整的STO商业闭环。2023-07-28 03:58:471
c++中类似strtok的处理string函数有没有?
标准C++的string对象吗?木有,自己写void SubString(vector<string>& out, const string& src, const string& delimit){size_t offset = 0, offset1 = 0;while(offset1 = src.find_first_of(delimit , offset1) > 0) {out.append(src.substr(offset, offset1 - offset)); offset = offset1; }}void SubString(vector<string>& out, const string& src, const vector<char>& delimit){}我的思路大概是这样了2023-07-28 03:58:565
安装python模块时报错如何解决
直接使用IDE安装或者下载模块包手动安装pip3 install setup.py2023-07-28 03:59:121
使用anoconda安装spams报错,紧急求解,如图。Python相关。
古奇哪个不是那个布吉那个不是那个?2023-07-28 04:00:004
树莓派 如何 安装pycurl 用pip install pycurl 总是报错
1.在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录C:Python27Scripts 2.进入命令行,然后把目录切换到python的安装目录下的Script文件夹下,运行 easy_inatall pip。3.pip安装成功后,在cmd下执行pip!2023-07-28 04:00:081
搜索引擎Lucene(4):索引的创建过程
创建索引的过程如下: 索引结构如下: IndexWriter结构: IndexWriter通过指定存放的目录(Directory)以及文档分析器(Analyzer)来构建,direcotry代表索引存储在哪里;analyzer表示如何来分析文档的内容;similarity用来规格化文档,给文档算分;IndexWriter类里还有一些SegmentInfos对象用于存储索引片段信息,以及发生故障回滚等。 添加文档使用addDocument()方法,删除文档使用deleteDocuments(Term)或者deleteDocuments(Query)方法,而且一篇文档可以使用updateDocument()方法来更新(仅仅是先执行delete在执行add操作而已)。当完成了添加、删除、更新文档,应该需要调用close方法。 这些修改会缓存在内存中(buffered in memory),并且定期地(periodically)刷新到(flush)Directory中(在上述方法的调用期间)。一次flush操作会在如下时候触发(triggered):当从上一次flush操作后有足够多缓存的delete操作(参见setMaxBufferedDeleteTerms(int)),或者足够多已添加的文档(参见setMaxBufferedDocs(int)),无论哪个更快些(whichever is sooner)。对被添加的文档来说,一次flush会在如下任何一种情况下触发,文档的RAM缓存使用率(setRAMBufferSizeMB)或者已添加的文档数目,缺省的RAM最高使用率是16M,为得到索引的最高效率,你需要使用更大的RAM缓存大小。需要注意的是,flush处理仅仅是将IndexWriter中内部缓存的状态(internal buffered state)移动进索引里去,但是这些改变不会让IndexReader见到,直到commit()和close()中的任何一个方法被调用时。一次flush可能触发一个或更多的片断合并(segmentmerges),这时会启动一个后台的线程来处理,所以不会中断addDocument的调用,请参考MergeScheduler。 一个IndexReader或者IndexSearcher只会看到索引在它打开的当时的状态。任何在索引被打开之后提交到索引中的commit信息,在它被重新打开之前都不会见到。 DocumentsWriter结构: DocumentsWriter 是由IndexWriter 调用来负责处理多个文档的类,它通过与Directory 类及Analyzer 类、Scorer 类等将文档内容提取出来,并分解成一组term列表再生成一个单一的segment 所需要的数据文件,如term频率、term 位置、term 向量等索引文件,以便SegmentMerger 将它合并到统一的segment 中去。 该类可接收多个添加的文档,并且直接写成一个单独的segment 文件。这比为每一个文档创建一个segment(使用DocumentWriter)以及对那些segments 执行合作处理更有效率。 每一个添加的文档都被传递给DocConsumer类,它处理该文档并且与索引链表中(indexing chain)其它的consumers相互发生作用(interacts with)。确定的consumers,就像StoredFieldWriter和TermVectorsTermsWriter,提取一个文档的摘要(digest),并且马上把字节写入“文档存储”文件(比如它们不为每一个文档消耗(consume)内存RAM,除了当它们正在处理文档的时候)。 其它的consumers,比如FreqProxTermsWriter和NormsWriter,会缓存字节在内存中,只有当一个新的segment制造出的时候才会flush到磁盘中。 一旦使用完我们分配的RAM缓存,或者已添加的文档数目足够多的时候(这时候是根据添加的文档数目而不是RAM的使用率来确定是否flush),我们将创建一个真实的segment,并将它写入Directory中去。 索引创建的调用过程: 一个Directory对象是一系列统一的文件列表(a flat list of files)。文件可以在它们被创建的时候一次写入,一旦文件被创建,它再次打开后只能用于读取(read)或者删除(delete)操作。并且同时在读取和写入的时候允许随机访问。 FSDirectory类直接实现Directory抽象类为一个包含文件的目录。目录锁的实现使用缺省的SimpleFSLockFactory,但是可以通过两种方式修改,即给getLockFactory()传入一个LockFactory实例,或者通过调用setLockFactory()方法明确制定LockFactory类。 目录将被缓存(cache)起来,对一个指定的符合规定的路径(canonical path)来说,同样的FSDirectory实例通常通过getDirectory()方法返回。这使得同步机制(synchronization)能对目录起作用。 RAMDirectory类是一个驻留内存的(memory-resident)Directory抽象类的实现。目录锁的实现使用缺省的SingleInstanceLockFactory,但是可以通过setLockFactory()方法修改。 IndexInput类是一个为了从一个目录(Directory)中读取文件的抽象基类,是一个随机访问(random-access)的输入流(input stream),用于所有Lucene读取Index的操作。BufferedIndexInput是一个实现了带缓冲的IndexInput的基础实现。 IndexOutput类是一个为了写入文件到一个目录(Directory)中的抽象基类,是一个随机访问(random-access)的输出流(output stream),用于所有Lucene写入Index的操作。BufferedIndexOutput是一个实现了带缓冲的IndexOutput的基础实现。RAMOuputStream是一个内存驻留(memory-resident)的IndexOutput的实现类。 域索引选项通过倒排索引来控制文本是否可被搜索。 当lucene建立起倒排索引后,默认情况下它会保存所有必要的信息以实施Vector Space Model。该Model需要计算文档中出现的Term数,以及它们出现的文职(这是必要的,比如通过词组搜索时用到)。但有时候这些域只是在布尔搜索时用到,他们并不为相关评分做贡献,一个常见的例子是,域只是被用作过滤,如权限过滤和日期过滤。在这种情况下,可以通过调用Field.setOmitTermFreqAndPositions(true)方法让lucene跳过对改选项的出现频率和出现位置的索引。该方法可以节省一些索引在磁盘上的储存空间,还可以加速搜索和过滤过程,但会悄悄阻止需要位置信息的搜索,如阻止PhraseQuery和SpanQuery类的运行。 域存储选项是用来确定是否需要存储域的真实值,以便后续搜索时能回复这个值。 lucene支持想一个域中写入多个不同的值。 这种处理方式是完全可以接受并鼓励使用的,因为这是逻辑上具有多个域值的域的自然表示方式。在lucene内部,只要文档中出现同名的多域值,倒排索引和项向量都会在逻辑上将这些语汇单元附加进去,具体顺序由添加该域的顺序决定。 文档和域的加权操作可以在索引期间完成。而搜索期间的加权操作会更加动态化,因为每次搜索都可以根据不同的加权因子独立选择加权或不加权,但这个策略也可能多消耗一些CPU效率。搜索期间的动态加权可以更灵活控制。 默认情况下,所有文档的加权因子都是1.0,通过改变文档的加权因子,就可以影响文档在索引中的重要程度。调整加权操作的API为:setBoost(float); 同文档加权一样,可以对进行加权操作。文档加权时,lucene内部会采用同一加权因子来对该文档中的域进行加权。域加权API:Field.setBoost(fliat)。 Analyzer类构建用于分析文本的TokenStream对象,因此(thus)它表示(represent)用于从文本中分解(extract)出组成索引的terms的一个规则器(policy)。典型的(typical)实现首先创建一个Tokenizer,它将那些从Reader对象中读取字符流(stream of characters)打碎为(break into)原始的Tokens(raw Tokens)。然后一个或更多的TokenFilters可以应用在这个Tokenizer的输出上。警告:你必须在你的子类(subclass)中覆写(override)定义在这个类中的其中一个方法,否则的话Analyzer将会进入一个无限循环(infinite loop)中。 StandardAnalyzer: StandardAnalyzer类是使用一个English的stop words列表来进行tokenize分解出文本中word,使用StandardTokenizer类分解词,再加上StandardFilter以及LowerCaseFilter以及StopFilter这些过滤器进行处理的这样一个Analyzer类的实现。2023-07-28 04:00:151
VC++,字符串解析,跪求帮忙。
使用CString的Tokenize函数,下面的例子来至MSDN 2008// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;CAtlString str(_T("%First Second#Third"));CAtlString resToken;int curPos = 0;resToken= str.Tokenize(_T("% #"),curPos);while (resToken != _T("")){ _tprintf_s(_T("Resulting token: %s "), resToken); resToken = str.Tokenize(_T("% #"), curPos);};2023-07-28 04:00:421
如何用 Python 中的 NLTK 对中文进行分析和处理
一、NLTK进行分词用到的函数:nltk.sent_tokenize(text) #对文本按照句子进行分割nltk.word_tokenize(sent) #对句子进行分词二、NLTK进行词性标注用到的函数:nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注三、NLTK进行命名实体识别(NER)用到的函数:nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。四、句法分析nltk没有好的parser,推荐使用stanfordparser但是nltk有很好的树类,该类用list实现可以利用stanfordparser的输出构建一棵python的句法树2023-07-28 04:00:511
如何用 Python 中的 NLTK 对中文进行分析和处理
一、NLTK进行分词用到的函数:nltk.sent_tokenize(text) #对文本按照句子进行分割nltk.word_tokenize(sent) #对句子进行分词二、NLTK进行词性标注用到的函数:nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注三、NLTK进行命名实体识别(NER)用到的函数:nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。四、句法分析nltk没有好的parser,推荐使用stanfordparser但是nltk有很好的树类,该类用list实现可以利用stanfordparser的输出构建一棵python的句法树2023-07-28 04:01:091
python2.7和3.0有区别吗
python3跟python2不兼容的。区别很多的。2023-07-28 04:01:191
如何用 Python 中的 NLTK 对中文进行分析和处理
一、NLTK进行分词用到的函数:nltk.sent_tokenize(text) #对文本按照句子进行分割nltk.word_tokenize(sent) #对句子进行分词二、NLTK进行词性标注用到的函数:nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注三、NLTK进行命名实体识别(NER)用到的函数:nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。四、句法分析nltk没有好的parser,推荐使用stanfordparser但是nltk有很好的树类,该类用list实现可以利用stanfordparser的输出构建一棵python的句法树2023-07-28 04:01:281
如何用 Python 中的 NLTK 对中文进行分析和处理
一、NLTK进行分词用到的函数:nltk.sent_tokenize(text) #对文本按照句子进行分割nltk.word_tokenize(sent) #对句子进行分词二、NLTK进行词性标注用到的函数:nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注三、NLTK进行命名实体识别(NER)用到的函数:nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。四、句法分析nltk没有好的parser,推荐使用stanfordparser但是nltk有很好的树类,该类用list实现可以利用stanfordparser的输出构建一棵python的句法树2023-07-28 04:01:381
maya中的mel是什么啊?
mel语言是maya自己的一套编程语言,mel是maya的基础,是比较偏底层的东西。如果你稍有编程基础的话,可以很容易掌握它。我们可以看到除了maya的插件(maya内部很多组件也都是以插件形式存在的)以外,所有的操作都可以在script editor窗口中有相应的mel语言与之对应。例如:创建一个常规的polygon球体,打开windows-->General Editors-->Script Editor,可以看到:polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -tx 2 -ch 1;;这句话的意思是创建一个polygon球体(polySphere),其半径为1(-r 1),x、y轴向的分段皆为20(-sx 20 -sy 20),轴向为Y轴向上(-ax 0 1 0),显示方式为有锯齿贴图(-tx 2),并带有历史纪录(-ch 1)。参见help中的polySphere词条。 最好的方法还是买书自己学,可以参考《Maya动画师MEL脚本编程全攻略》(以前看过,很快就能上手)。 附上我以前学习的一些笔记,希望能给你一些帮助: 1.得到所有被选中对象的列表并存入数组:“string $sel[] = `ls -sl`;” 2.在表达式中可以直接用“=”给对象的属性赋值或取值;而mel中则必须通过getAttr和setAttr来实现,这种方式效率比较低 3.“==”是判断是否相等;“!=”不等于 4.定义变量:“float $rotation_value;” 5.为对象添加属性:Window-->Attribute Editor;Attributes-->Add Attribute 6.在数学表达式中的向量:可以对向量中的单个分值赋值,如:$abc.x=3;但是不可以这样赋值:$abc=<<$abc.x,1,1>> 7.向量运算(Maya中的点都是向量存储,因此要定位的话向量比较重要):向量相减:代表向量从一个点移到另一个点所需行进的方向和距离,减数指向被减数 8.向量操作:unit(格式化)/unit($vectoer1);mag(长度)/mag($vectoer1);angle(夹角,弧度制,如果想获得角度将它乘以180/pi,方向为逆时针)/angle($vector1l,$vector2);cross(叉积,与两个向量正交,即垂直的第三个向量,其长度为:dot运算)/cross($vector1l,$vector2);dot(=mag($vector1)*mag($vector2)*cos(angle($vector1,$vector2)))/($vector1l,$vector2);rot(将一个向量绕着由另一个向量所定义的轴旋转一定的角度)/rot($vector1,$vector_axis,$degrees) 9.检测两个向量平行或垂直:dot(unit($vector1),unit($vector2)),如果=0,那么垂直;如果=1,那么平行 10.在mel语言中,不能把属性值赋给变量,必须用如下格式获得:$val=`getAttr expression1.time`; 11.连接属性:connectAttr 属性1 属性2 12.创建表达式:express -string "属性1=值";;适用于mel中对属性的赋值 13.变量:数组变量/$t={1,2,3};声明变量/int $t; 14.全局变量:Maya要求在每一个使用全局变量的域中重新声明该变量,如: global int $a=1; proc print_a(){ global int $a; print($a); } print_a(); 15.将一个整数转换为一个浮点数:float(3);;将浮点数转换为整数:int(3.7),结果为向下取整=3 16.算术比较运算:print(5>6);结果为:0或1 17.运算符:+,-,*,/,%,+=,-=,*=,/=,++,--,&&,||,! 18.取相邻最大整数:ceil($f);取相邻最小整数:floor($f) 19.在mel中的向量:不能直接将一个值赋给向量的一个分量,如:$abc.x=3;必须这样赋值:$abc=<<$abc.x,1,1>> 20.分隔字符串:tokenize "string1" $myarray;得到的结果将是以空白符来拆分字符串,并存入数组中;又:tokenize "string1" "char" $myarray;将得到以char来拆分字符串,并存入数组中 21.数组中所有没有被赋值的元素默认为0 22.数组的尺寸:size($myarray) 23.如果需要在脚本中使用一个非常的数组,在结束时使用mel中的clear命令清楚该数组:clear $myarray 24.模式选择:-c标记或不适用标记将选择创建模式;-q选择查询模式;-e选择编辑模式 如:sphere -q -radius nurbsSphere1 返回半径 sphere -e -radius 15 nurbsSphere1 修改半径 25.当希望存储命令的返回值时,可以在赋值运算的右边将命令置入反引号(``)中。如:string $coneNodeNames[]=`cone -name testing2` 26.使用eval命令:string $spherecommand="sphere"; string $nodenames[]=eval($spherecommand);表示创建一个球体,将sphere命令的返回值存入$nodenames数组中 27.在脚本中有三种运行mel命令的方法:(一)如果不关心返回值,作为独立一行的语句独立运行;(二)如果想将返回值存入一个变量,将其放入反引号中;(三)如果想在字符串中构造命令并执行它,使用eval函数命令。2023-07-28 04:02:261
各位大神,关于python安装statsmodel的问题
多试几次,我也遇到过这个问题。。2023-07-28 04:02:352
如何使用nltk进行中文分词?
中文里没有分词的说法,只有英文、法语、德语等有分词的说法。分词是动词的三种非限定形式之一,分为两种:现在分词和过去分词。现在分词一般有四种形式,基本形式为“动词原形+-ing”,完成式为having加过去分词,一般被动式为being加过去分词,完成被动式为havingbeen加过去分词,而过去分词只有一种形式,规则动词的过去分词由动词原形加-ed构成,不规则动词需要单独记忆。现在分词一般式的构成如下:动词的现在分词,一般在词尾加-ing,但以-e结尾的字则去-e加-ing:laugh—laughing、live--living。但是,-e前为元音,-e要保留。Hoe—hoeing、agree—agreeing,toe—toeing、dye—dyeing、shoe—shoeing、singe—singeing。以重读闭音节结尾的动词,末尾只有一个辅音字母(x除外),双写末尾的辅音字母加-ing:plan—planning、occur—occurring。非重读闭音节结尾的动词,则不要双写,如:travel—traveling。以辅音字母c结尾的动词,c后加k再加-ing:traffic—trafficking、picnic—picnicking。不规则动词的现在分词要逐个记忆:lie—lying、die—dying、tie—tying、vie—vying。规则动词的过去分词,一般在词尾加-ed,但以-e结尾的字则只加-d:laugh—laughed、live—lived、age—aged、curse—cursed、learn—learned、crook—crooked、bless—blessed。以辅音字母加y结尾的动词,变y为I加-ed。如:hurry—hurried、try—tried。以重读闭音节结尾的动词,末尾只有一个辅音字母(x除外),双写末尾的辅音字母加-ed:plan—planned、occur—occurred、dog—dogged 。但:humbug—humbugged、zigzag—zigzagged。非重读闭音节结尾的动词,则不要双写,如:travel—traveled。以辅音字母c结尾的动词,c后加k再加-ed:traffic—trafficked、picnic—picnicked。不规则动词的过去分词须单独记忆:get—got—gotten、sink—sank—sunk、strike—struck—struck、bear—bore—borne、rot—rotted—rotten、hang—hung—hung。2023-07-28 04:02:442
安装pip3 install sanic?
你想说的是安装什么呀?这个东西我不太认识,没有办法告诉你。2023-07-28 04:03:005
MySQL的全文索引Fulltext Index | 包括ngram
InnoDB的全文索引使用反向索引的设计。反向索引存储了一个单词(word)列表,对于每个单词,都有一个文档的列表,来标识这个单词出现的地方。为了支持临近搜索(proximity search),每个单词的位置信息也以字节偏移的方式存储。 当创建了InnoDB全文索引,一系列的索引表会一同被创建,见下面的例子: 最前面的六个表包含了反向索引,它们被称作附属索引表(auxiliary index table)。当输入的表被索引(tokenized)后,每个独立的单词(亦称作“tokens”)会被携带其DOC_ID和位置信息插入到索引表中。根据单词第一个字符的字符集排序权重,在六个索引表中对单词进行完全排序和分区。 反向索引分区到六个附属索引表以支持并行的索引创建。默认有2个线程复制索引(Tokenize)、排序、插入单词和关联数据到索引表中。工作的线程的数量由 innodb_ft_sort_pll_degree 配置项控制的。对于大表的全文索引,可以考虑增加线程数量。 如果主表创建在 xx表空间,索引表存储在它们自己的表空间中。反之,索引表存储于其索引的表空间中。 前面例子展示的另外一种索引表被称作通用索引表,它们被用于全文索引的“删除处理(deletion handing)”和存储内部状态。不同于为每个全文索引都各自创建的反向索引表,这组表对特定表的所有全文索引都是共用的。 即使全文索引删掉了,通用索引(Common Index)也会被保留,当全文索引删除后,为这个索引而创建的FTS_DOC_ID列依然保留,因为移除FTS_DOC_ID列会导致重构之前被索引的表。管理FTS_DOC_ID列需要用到通用索引表。 为了防止大量并发读写附属表,InnoDB使用全文索引缓存去临时缓存最近的插入行。在存满并刷入磁盘之前,缓存的内容一直存储在内存之中,可以通过查询 INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE 表去查看最近缓存的插入行。 缓存和批处理刷新行为避免了对辅助索引表的频繁更新,频繁更新可能会在繁忙的插入和更新期间导致并发访问问题。批处理还避免了对同一个word的多次插入,最大化的减少了重复的条目。相同的word会先merge再刷入到磁盘中,而不是为每个word单独插入,这样提高了插入效率并且使得索引附属表尽可能的小。 全文索引缓存只缓存最近插入的行,查询时,已经刷入磁盘(附属索引表)的数据不会再回到索引缓存中。附属索引表中的内容是直接查询的,最终返回的结果返回前需要将附属索引表的结果和索引缓存中的结果合并。 InnoDB使用被称作DOC_ID的唯一文件描述符,将全文索引中的单词与该单词在文档中的记录映射起来。映射关系需要索引表中的 FTS_DOC_ID 列。在创建全文索引时,如果没有定义 FTS_DOC_ID 列,InnoDB会自动的加入一个隐藏的 FTS_DOC_ID 列。下面是一个例子, CREATE FULLTEXT INDEX ft_index ON xxxxxxxx(CONTEXT) [2021-11-12 18:14:04] [HY000][124] InnoDB rebuilding table to add column FTS_DOC_ID 重点看一下这一行: [HY000][124] InnoDB rebuilding table to add column FTS_DOC_ID ,InnoDB重新构建了这个表,并且添加了一个列 FTS_DOC_ID 。 在CREATE TABLE的过程中添加 FTS_DOC_ID 的时间成本要低于在已经有数据的表上建立全文索引。如果在表加载数据之前定义 FTS_DOC_ID 列,这个表和它的索引都不需要为了新增列而重新构建。如果你不需要考虑 CREATE FULLTEXT INDEX 的性能,可以让InnoDB为你创建 FTS_DOC_ID 列。InnoDB会新增一个隐藏的 FTS_DOC_ID 列,并且在 FTS_DOC_ID 上建立唯一索引(FTS_DOC_ID_INDEX)。如果你想自行创建 FTS_DOC_ID 列,这个列必须定义为 BIGINT UNSIGNED NOT NULL 且命名为FTS_DOC_ID(全大写),如下例子: 如果你自行定义 FTS_DOC_ID 列的话,你需要负责管理这个列,避免空值(empty)或者重复值。 FTS_DOC_ID 的值是不能被重复利用的,所以也就是说 FTS_DOC_ID 的值是需要一直增加的。 或者,你可以在 FTS_DOC_ID 列上创建所必须的唯一索引FTS_DOC_ID_INDEX(全大写)。 mysql> CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on opening_lines(FTS_DOC_ID); 如果你没有创建FTS_DOC_ID_INDEX,InnoDB会自动创建。 在MySQL 5.7.13前,允许最大FTS_DOC_ID与最新的FTS_DOC_ID之间的间隔为10000,在MySQL 5.7.13及之后的版本中,这个允许的间隔为65535。 为了避免重新构建表,FTS_DOC_ID列在删除了全文索引之后依然被保留。 删除被索引文件的一个记录,可能会在附属索引表中产生非常多的小的删除项,在并发访问时,会产生热点问题。为了避免这个问题,每当被索引表中的记录被删除时,会将被删文档的DOC_ID记录在一个特别的 FTS_*_DELETED 表中,同时全文索引中已经索引了的记录依然被保存。在返回查询结果前,使用 FTS_*_DELETED 中的信息去过滤掉已经删除掉了的DOC_ID。这种设计的优势在于删除速度快且消耗低。不好的地方在于索引的大小不能随着记录的删除而立即减少。为了删除已删除记录在全文索引中的项,需要对被索引的表执行OPTIMIZE TABLE,配合[ innodb_optimize_fulltext_only=ON ],去重构全文索引。 细节略,有例子: https://dev.mysql.com/doc/refman/5.7/en/innodb-fulltext-index.html 全文搜索只能看到已经提交了的数据。 你可以通过查询下面的INFORMATION_SCHEMA表,来监控或测试InnoDB的一些特殊文本处理。 默认的分词器不支持中文,不能检索到中文中的英文单词。 InnoDB默认的Stopwords: select * from information_schema.INNODB_FT_DEFAULT_STOPWORD; SQL中的关键词(保留关键字): Shell中的关键词:for,while,echo 其他:###, ***, --, 被索引表数据量、索引表数据量 模糊匹配与严格匹配的性能差距 需要将 innodb_optimize_fulltext_only 配置为ON,这里是否需要DBA在MySQL镜像中修改? innodb_optimize_fulltext_only 设置为ON后,对系统有何影响需要评估。 innodb_optimize_fulltext_only 执行的时间、频率。 MySQL内建的全文检索解析器使用单词之间的空白作为分隔符以标识单词的头尾,但是这里有个限制,对于表意文字,它是没有单词分隔符的。为了解决这个限制,MySQL提供了支持中文、日语、韩语的 ngram 解析器。ngram解析器支持InnoDB和MyISAM。 Ngram是内建在服务中的插件,像其他自建在服务中的插件一样,服务启动时会自动加载它。全文检索的语法参考上面( Section 12.10, “Full-Text Search Functions” ),这里只讨论一些不同的地方。除了单词的最小、最大长度配置项([ innodb_ft_min_token_size ]innodb_ft_max_token_size,ft_min_word_len,ft_max_word_len,全文检索依赖一些配置项都是可以使用的。 Ngram默认索引的单词(token)的大小为2( 2bigram )。例如,索引的大小为2,Ngram解析器解析字符串“abc def”为四个单词元素(tokens):“ab”, “bc”, “de” and “ef”。 ngram token size is configurable using the ngram_token_size configuration option, which has a minimum value of 1 and maximum value of 10. 作为只读变量, ngram_token_size 只能在启动配置或者配置文件中指定 与默认的解析器相差不大,多了一句: xxx WITH PARSER ngram Ngram在解析时去除空格,如 MySQL内建的默认全文检索解析器将单词与Stopword列表中的做对比,如果单词与Stopword列表中的元素相同的话,这个单词则不会被索引。对于Ngram解析器,Stopword的处理方式不同。Ngram解析器不排除与stopword列表中的条目相等的token,而是排除包含stopwords的token。例如,假设 ngram_token_size=2 ,包含“a,b”的文档将被解析为 “a,” h和“,b”。如果将逗号(“,”)定义为停止字,则 “a,”和“,b”都将不会加入索引中,因为它们包含逗号。 例子: 默认Ngram解析器使用默认的Stopword列表,这里面含有英文的Stopword。如果需要中文的Stopword,需要你自己创建。 Stopword的长度超过 ngram_token_size则会被忽略。 有两个文档,一个包含“ab”,另一个包含“abc”。对于搜索文本“abc”将转换成“ab”,“bc”。 略。 For example, The search phrase “abc” is converted to “ab bc”, which returns documents containing “abc” and “ab bc”. The search phrase “abc def” is converted to “ab bc de ef”, which returns documents containing “abc def” and “ab bc de ef”. A document that contains “abcdef” is not returned. 使用Ngram解析器好处是支持了中文的检索2023-07-28 04:03:141
python3.x实现人脸识别运行时出现的错误,请问是怎么回事?
host里面引号的问题,一句里面只能头尾用",不能头尾中间都有",实在要用引号,可以使用"和"组合2023-07-28 04:03:241
英语non- unique怎么翻译?
non unique非唯一2023-07-28 04:03:5211
有哪些好的命名实体识别的工具,词性标注工具
一、NLTK进行分词 用到的函数: nltk.sent_tokenize(text) #对文本按照句子进行分割 nltk.word_tokenize(sent) #对句子进行分词 二、NLTK进行词性标注 用到的函数: nltk.pos_tag(tokens)#tokens是句子分词后的结果2023-07-28 04:04:171
石油币具有哪些职能,比特币具有哪些职能,以及他们的前景如何?
比特币没有什么职能,就是单纯用来炒作,看好做多,不看好做空,因为波动大,确实能带来很高的回报,我再Bitoffer买了很多2023-07-28 04:04:253
什么是STO,STO代币发行的优势
STO有望成为区块链行业的下一个风口。连续两个月的行情遇冷ICO几乎是有崩盘的节奏。就拿ETH来说,持续的在200美元做有徘徊,有升有降,始终没有过大的波动。随之而来的是通证型代币发行也就是我们说的STO进入到了人们的视野。是人们看到了区块链的希望。STO是通证型代币发行,Security Token Offering 的简写。在当前大环境下很有可能成为下一个风口。但是STO的发展受到很大的制约,其中最大的制约就是政策。STO是符合当地法律法规,接受监管的代币发行,但前提是当地得有相应的法律法规支持做发币。就目前来看只有美国能做STO业务,并且美国也已经有STO类型的代币发行出来了。做STO发币和传统的ICO发币差别不大,也是需要个海外主体(因为大陆禁止),只不过ICO是海外的主体即可,但是STO必须是美国的主体公司才行,因为只有在美国才能做。接下来就的做法律合规以及符合SEC规定的VIE架构,这些都是需要你将美国主体做好之后才能做的。注册美国主体需要项目方提供一个注册人信息以及注册主体名称即可,时间的话分情况而定,因为美国50个州各州的注册时间等都是不同的。其中注册加州时间就比较长,基本需要到1个月的时间。STO能否成为区块链的写一个风口就看这两个月的发展吧。现在越来越多的项目方看到了STO,当然有好处也有缺点,STO是属于中心化的,和区块链的含义是有些背道而驰的。或许STO会火起来,但是区块链的发展绝对不是止于STO,STO只是个过度,终将被淘汰的。区块链它的本质是去中心化的。 以上观点仅代表个人。2023-07-28 04:04:402
[20分] mybatis怎样配置支持并发
mybatis数据库连接池的配置maxActive配大一些,initialSize也稍加一些。tomcat200个是没问题的。表设计的好点,一切都ok。2023-07-28 04:04:552
求翻译Children get (in the way) during the holidays.
孩子们(的方式)在假期。2023-07-28 04:05:054
Python 安装出现这样的字符怎么办
用的类ssh工具连接的linux还是在redhat本身的命令行?如果是ssh之类的工具,那要百度去,有解决方法;如果是本身命令行的问题,建议换个通用键盘试试;2023-07-28 04:05:481
Centos7运行报错:ImportError: No module named MySQLdb解决办法
Traceback (most recent call last): File "main_fengxing_short_all.py", line 8, in <module> import db_test File "/home/python/short_video_all_source/db_test.py", line 4, in <module> import chang_db File "/home/python/short_video_all_source/chang_db.py", line 2, in <module> import MySQLdb ImportError: No module named MySQLdb ERROR: Command errored out with exit status 1: command: /bin/python -c "import sys, setuptools, tokenize; sys.argv[0] = """""/tmp/pip-install-Fs3wje/mysql-python/setup.py"""""; file ="""""/tmp/pip-install-Fs3wje/mysql-python/setup.py""""";f=getattr(tokenize, """""open""""", open)( file );code=f.read().replace(""""" """"", """"" """"");f.close();exec(compile(code, file , """""exec"""""))" egg_info --egg-base /tmp/pip-install-Fs3wje/mysql-python/pip-egg-info cwd: /tmp/pip-install-Fs3wje/mysql-python/ Complete output (10 lines): sh: mysql_config: command not found Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-Fs3wje/mysql-python/setup.py", line 17, in <module> metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 25, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. sudo python -m pip install --upgrade --force pip sudo pip install setuptools==33.1.1 yum install mysql-devel yum install python-devel pip install mysql-python2023-07-28 04:05:551
取CString字符串的值
CString strText = _T("Item_小猪,Item_小兔,Item_小蛇,Item_小猫,Item_小狗,Item_小青蛙,Item_小麻雀"); LPCTSTR szToken = _T("Item_,"); CString strToken(_T("")); int curPos = 0; int index = -1;//定义变量并初始化 while(_T("") != (strToken = strText.Tokenize(szToken, curPos))) { if(!strToken.IsEmpty()) { AfxMessageBox(strToken); index++;//每取出一个就+1 } }2023-07-28 04:06:051
quartz每月最后一天执行 报错 定时59 59 23 L * ?
多空拉锯哦i饿啊2023-07-28 04:06:122
我的世界Hmcl报错,请大佬帮忙看看?
可以搞multi或者pcl启动器,可能是hmcl抽风2023-07-28 04:06:292