中文分词常用方法简述 词云可视化——中文分词与词云制作?

[更新]
·
·
分类:行业
1615 阅读

中文分词常用方法简述

词云可视化——中文分词与词云制作?

词云可视化——中文分词与词云制作?

第一:主题和意义
你为什么需要制作个性化词云,是艺术品还是研究分析内容的一种表现方式,是文本挖掘技术的可视化,还是为了传播更方便。形式大于内容,在有内容的前提下,可视化也是一种分析!当然我更倾向文本挖掘后的内容可视化。
当然,我也不反对纯粹为了表现或者玩玩的可视化,玩也是一种学习。 因此选择什么主题,什么主题适合用个性化词云表现就更为重要了。比如:为大人物明星打标签,品牌logo打标签,SUV汽车打标签,电视台台标打标签都是好的创意和选择。
第二:语料收集
个性化词云是依赖语料和抽取语料关键词呈现的,如果你有了要表现的词云标签,就可以直接制作词云了。记住这里要有两个数据:1、标签关键词 2、关键词词频,词频决定关键词的显示大小。
语料的收集依赖你的主题和想法,从应用的角度我们主要是为了分析微博,所有微博是最好的语料来源,也是文本挖掘的结果。当然你可以从任何途径和资源活动要表现的语料。

什么是分词.起什么作用?

定义及其作用如下:   【汉语】   分词指的是将一个汉字序列切分成一个一个单独的词。
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。  【英语】   分词就是具有动词及形容词二者特征的词,尤指以-ing或-ed,-d,-t,烯或-n结尾的英语动词性形容词,具有形容词功能,同时又表现各种动词性特点,如时态,语态,带状语性修饰语的性能及带宾词的性能。词分分为动词过去式状语从句:过去分词两种,一种的英文非谓语动词形式。现在分词和过去分词主要差别在于:现在分词表示“主动和进行”,过去分词表示“被动和完成”(不及物动词的过去分词不表示被动,只表示完成)分词可以有自己的状语。近来谁也没有见过或逻辑主语等。

mysql的中文全文搜索,关于分词,有没有好的解决方案?

全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。
这不,从MySQL5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。
在使用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小,比如,[mysqld]ngram_token_size2这里把分词大小设置为2。要记住,分词的SIZE越大,索引的体积就越大,所以要根据自身情况来设置合适的大小。示例表结构:
CREATE TABLE articles (id INTUNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,titleVARCHAR(200),body TEXT,FULLTEXT (title,body) WITH PARSER ngram) ENGINEInnoDBCHARACTER SET utf8mb4示例数据,有6行记录。mysqlgt select * from articlesG**************************
*1. row ***************************id: 1title: 数据库管理body: 在本教程中我将向你展示如何管理数据库***************************2. row ***************************id: 2title: 数据库应用开发body: 学习开发数据库应用程序***************************3. row ***************************id: 3title: MySQL完全手册body: 学习MySQL的一切***************************4. row ***************************id: 4title: 数据库与事务处理body: 系统的学习数据库的事务概论***************************5. row ***************************id: 5title: NoSQL精髓body: 学习了解各种非结构化数据库***************************6. row ***************************id: 6title: SQL 语言详解body: 详细了解如果使用各种SQL6 rows inset (0.00 sec)显式指定全文检索表源mysqlgt SETGLOBAL innodb_ft_aux_table#34new_feature/articles#34Query OK, 0 rows affected (0.00 sec)通过系统表,就可以查看到底是怎么划分articles里的数据。
mysqlgt SELECT *FROM information__FT_INDEX_CACHE LIMIT 20,10 ------ -------------- ------------- ----------- -------- ---------- | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID| POSITION | ------ -------------- ------------- ----------- -------- ---------- | 中我 | 2 | 2 | 1 | 2 | 28 || 习m | 4 | 4 | 1 | 4 | 21 || 习了 | 6 | 6 | 1 | 6 | 16 || 习开 | 3 | 3 | 1 | 3 | 25 || 习数 | 5 | 5 | 1 | 5 | 37 || 了解 | 6 | 7 | 2 | 6 | 19 || 了解 | 6 | 7 | 2 | 7 | 23 || 事务 | 5 | 5 | 1 | 5 | 12 || 事务 | 5 | 5 | 1 | 5 | 40 || 何管 | 2 | 2 | 1 | 2 | 52 | ------ -------------- ------------- ----------- -------- ---------- 10 rows in set (0.00 sec)这里可以看到,把分词长度设置为2,所有的数据都只有两个一组。上面数据还包含了行的位置,ID等等信息。
接下来,我来进行一系列检索示范,使用方法和原来英文检索一致。1. 自然语言模式下检索:A,得到符合条件的个数,mysqlgtSELECT COUNT(*) FROM articles-gt WHERE MATCH (title,body) AGAINST (#39数据库#39 IN NATURALLANGUAGE MODE) ---------- | COUNT(*) | ---------- | 4 | ---------- 1 row in set (0.05 sec)B,得到匹配的比率,mysqlgtSELECT id, MATCH (title,body) AGAINST (#39数据库#39 IN NATURAL LANGUAGE MODE)AS score FROM articles ---- ---------------------- | id| score | ---- ---------------------- | 1 | 0.12403252720832825 || 2 | 0.12403252720832825 || 3 | 0 || 4 | 0.12403252720832825 || 5 | 0.062016263604164124 || 6 | 0 | ---- ---------------------- 6rows in set (0.00 sec)2. 布尔模式下搜索,这个就相对于自然模式搜索来的复杂些:A,匹配既有管理又有数据库的记录,mysqlgt SELECT * FROM articles WHERE MATCH (title,body)-gt AGAINST (#39 数据库 管理#39 IN BOOLEAN MODE) ---- ------------ -------------------------------------- | id| title | body | ---- ------------ -------------------------------------- | 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库| ---- ------------ -------------------------------------- 1 rowin set (0.00 sec)B,匹配有数据库,但是没有管理的记录,mysqlgt SELECT * FROM articles WHERE MATCH (title,body)-gt AGAINST (#39 数据库 -管理#39 IN BOOLEAN MODE) ---- ------------------ ---------------------------- | id| title | body | ---- ------------------ ---------------------------- | 2 | 数据库应用开发 | 学习开发数据库应用程序 || 4 | 数据库与事务处理 | 系统的学习数据库的事务概论 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 | ---- ------------------ ---------------------------- 3rows in set (0.00 sec)C,匹配MySQL,但是把数据库的相关性降低,mysqlgt SELECT * FROM articles WHERE MATCH (title,body)-gt AGAINST (#39gt数据库 MySQL#39 INBOOLEAN MODE) ---- --------------- ----------------- | id| title | body | ---- --------------- ----------------- | 3 | MySQL完全手册 |学习MySQL的一切 | ---- --------------- ----------------- 1 rowin set (0.00 sec)3,查询扩展模式,比如要搜索数据库,那么MySQL,oracle,DB2也都将会被搜索到,mysqlgt SELECT * FROM articles-gt WHERE MATCH (title,body)-gt AGAINST (#39数据库#39 WITH QUERY EXPANSION) ---- ------------------ -------------------------------------- | id| title | body | ---- ------------------ -------------------------------------- | 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库| 4 | 数据库与事务处理 | 系统的学习数据库的事务概论| 2 | 数据库应用开发 | 学习开发数据库应用程序 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 || 6 | SQL 语言详解 | 详细了解如果使用各种SQL|| 3 | MySQL完全手册 | 学习MySQL的一切 | ---- ------------------ -------------------------------------- 6rows in set (0.01 sec)当然,我这里只是功能演示,更多的性能测试,大家有兴趣可以进行详细测试。由于N-grm是中文检索常用的分词算法,已经在互联网大量使用,这次集成到mysql中,想必效果上不会有太大的问题。