释义1:英文单词
n单词,歌词,台词;(说的)话;诺言;命令
vt措辞,用词;用言语表达
vi讲话
释义2:微软文字处理软件
Microsoft Office Word是微软公司的一个文字处理器应用程序。
Word给用户提供了用于创建专业而优雅的文档工具,帮助用户节省时间,并得到优雅美观的结果。
一直以来,Microsoft Office Word 都是最流行的文字处理程序。
作为 Office 套件的核心程序, Word 提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂的文档使用。哪怕只使用 Word 应用一点文本格式化 *** 作或处理,也可以使简单的文档变得比只使用纯文本更具吸引力。
释义3:编程语言中的一种数据类型
WORD是无符号的短整型,且占2个字节
释义4:Java分布式中文分词组件
word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词性标注、同义标注、反义标注、拼音标注等功能。同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。
mysql默认不支持中文全文索引,不过对于MyISAM表可以使用外部插件mysqlcft来建立中文全文索引。若是对“mysqlcft”插件不了解,可以百度“mysqlcft”会有详细的资料的。
import re
import collections
import pandas as pd
from sklearnfeature_extractiontext import TfidfVectorizer, CountVectorizer
#为避免出问题,文件名使用全路径
data = pdread_csv('XXXcsv')
trainheadlines = []
for row in range(0, len(dataindex)):
trainheadlinesappend(' 'join(str(x) for x in datailoc[row, m:n]))
#上面的m:n代表取那一列,或者那几列。
advancedvectorizer = TfidfVectorizer(
min_df=0, max_df=1, max_features=20000, ngram_range=(1, 1))
advancedtrain = advancedvectorizerfit_transform(trainheadlines)
print(advancedtrainshape)
好处上面已经说了。最大的优点其实就是检索速度快,对服务器的负荷降低
缺点,如果说有的话,就是需要进行填充
上一次填充后,你增加的内容,直到你再次增量填充,否则是检索不到的。
你可以根据自己更新内容的频率设置调度来自动执行。
第一,使用N_Gram方式建立数据库的全文检索,要求可以对导入句子进行全文检索方式的模糊查询。第二, 能够统计出检索内容所耗时间。第三, 支持中英,和英中两种方式的检索。第四, 支持导入句子功能,对指定格式的双语文本文档进行导入。
在有搜索引擎之前,我们查文档常使用顺序匹配。我们需要在文档中顺序扫描,找到完全匹配的子句。
有的情况精确匹配比搜索引擎的查找有优势,比如这样的内容”chinese:1388838245“,如果用户输入”883“希望搜到这则内容,在常规的情况下是搜不到的。
这是因为在有了搜索引擎后,我们对查询语句做的处理就不一样了。我们通常会先分词,然后查找对应的词条索引,最后得到评分由高到低的文档列表。上面的例句在常规的分词情况下,没有也不可能有”883“这个词条,因此搜索不到这则内容。
我一度以为没法实现完全匹配了,直到一个硬需求的出现。花了一天时间,把完全匹配用搜索引擎的思维整理出来。
简要描述实现思路,字段按一字一词的形式分词,再利用短语查询来搜索。
ES中,可以实现一字一词的的分词器是NGram。
它其实是一个上下文相连续字符的分词工具,可以看官方文档中的例子。当我们将它 min_gram 和 max_gram 都设为1时,它会按一字一词的形式分词。比如“shinyke@189cn”,分词的结果是["s" , "h" , "i" , "n" , "y" , "k" , "e" , "@" , "1" , "8" , "9" , "" , "c" , "n" ]。
<pre name="code" class="javascript">/index_name/{
"settings": {
"analysis": {
"analyzer": {
"charSplit": {
"type": "custom",
"tokenizer": "ngram_tokenizer"
}
},
"tokenizer": {
"ngram_tokenizer": {
"type": "nGram",
"min_gram": "1",
"max_gram": "1",
"token_chars": [
"letter",
"digit",
"punctuation"
]
}
}
}
}
}
以上语句中,构建了一个名为“charSplit”的分析器。它使用一个名为“ngram_tokenizer”的Ngram分词器。
可以用如下语句测试charSplit分析器,可以看到一字一词的效果:
curl -POST >"测试语句"把这个分析器在mapping里用起来:
"sender": {
"type": "string",
"store": "yes",
"analyzer": "charSplit",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
},
接下来就可以用match_phrase来实现完全匹配查询。
/{index_name}/{type_name}/_search{
"query": {
"multi_match": {
"query": "@189cn",
"type": "phrase", //type指定为phrase
"slop": 0, //slop指定每个相邻词之间允许相隔多远。此处设置为0,以实现完全匹配。
"fields": [
"sender"
],
"analyzer": "charSplit", //分析器指定为charSplit
"max_expansions": 1
}
},
"highlight": { //测试高亮是否正常
"pre_tags": [
"<b>"
],
"post_tags": [
"</b>"
],
"fragment_size": 100,
"number_of_fragments": 2,
"require_field_match": true,
"fields": {
"sender": {}
}
}
}
phrase查询原始的作用是用来做短语查询,它有一个重要的特点:有顺序。我们利用了它匹配的有序性,限制slop为0,则可实现完全匹配查询。
以上语句返回的结果是:
{
"took": 18,
"timed_out": false,
"_shards": {
"total": 9,
"successful": 9,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 040239456,
"hits": [
{
"_index": "index_name",
"_type": "type_name",
"_id": "AU9OLIGOZN4dLecgyoKp",
"_score": 040239456,
"_source": {
"sender": "18977314000 <18977314000@189cn>, 李X <18977314000@189cn>, 秦X <18977314000@189cn>, 刘X <18977314000@189cn>"
},
"highlight": {
"sender": [
"18977314000 <18977314000<b>@</b><b>1</b><b>8</b><b>9</b><b></b><b>c</b><b>n</b>>, 李X <18977314000<b>@</b><b>1</b><b>8</b><b>9</b><b></b><b>c</b><b>n</b>>, 秦纯X <18977314000<b>@</b><b>1</b><b>8</b><b>9</b><b></b><b>c</b><b>n</b>>, 刘X <189773140"
]
}
}
]
}
}
到此,就实现了完全匹配查询。实际环境中用NGram做一字一词分析器的时候会更细致一些,比如有一些字符需要用stop word过滤掉。这些细节可以根据实际需要在构造分析器时添加filter实现,在此不做赘述。
以上就是关于word是什么意思全部的内容,包括:word是什么意思、现在mysql自带全文检索 是否支持中文、Python编程实现csv文件某一列的词频统计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)