使用ElasticSearch分析自己的语言

01

<<富爸爸,穷爸爸>>书里面提到过,想要知道自己是富人还是穷人,最好的办法就是仔细收集自己说过的话,你经常说些什么话,就决定了你的思维和行动,最终决定了你是穷人还是富人.

思维 --> 语言 --> 行动 --> 结果

关注自己的语言,可以从自己的语言中找到自己的思维缺陷和漏洞.

从而学习相应的思维模型,减少犯错,过一个自己想要的人生.

02

也许我们很少会去收集自己平时说的最多的话.007社群里的同学都是喜欢写作的人,我们可以从我们每周一篇的文章中找到一些蛛丝马迹.

通过ElasticSearch可以很好的实现这个需求,即观察到你的常规思维.

03

首先我们要对ElasticSearch进行安装.因为需要用到中文分词器IK分词插件,所以我们可以去Github下载.

可以直接使用项目: https://github.com/medcl/elasticsearch-rtf

当前的版本是 Elasticsearch 5.1.1,ik 插件也是直接自带了。

安装好 ElasticSearch,跑起来服务,测试服务安装是否正确:

$ curl http://localhost:9200

{
  "name" : "Rkx3vzo",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Ww9KIfqSRA-9qnmj1TcnHQ",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-06T12:36:15.409Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}```

04

为了方便对ElasticSearch的操作,我们可以在谷歌浏览器上安装SENSE插件.

关于ES对应关系型数据库的对比如下:

mysql ElasticSearch
DataBase Index
Table Type
Row Document
Column Field
Schema Mapping
Index Everthing is indexed
SQL Query DSL
Select * from table GET http://
Update table set PUT http://
  1. 首先我们创建一个索引和类型,也就是一个数据库和一张表,同时定义了表的字段,文章的标题和内容采用ik分词器
PUT /renrensou
{
  "mappings": {
    "renrensou_v1": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "platform": {
          "type": "text"
        },
        "author": {
          "type": "text"
        },
        "name": {
          "type": "text"
        },
        "date": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "linkUrl": {
          "type": "text"
        }
      }
    }
  }
}
  1. 然后我们可以采用爬虫技术,将自己的所有或是公众号文章爬取并导入到ElasticSearch,可以采用API的方式,也可以手动

PUT /renrensou/renrensou_v1/1
{
    "title" : "打破你的认知边界",
    "platform" : "",
    "author" : "理可",
    "name" : "理可",
    "date" : "2018-11-20",
    "content" : "我姓程,名序员,以前,我一直在用的开发工具是Eclipse.我写的第一个程序就是使用的Eclipse.所以我一直认为这是一个很好的工具. MyEcliipse 我们公司大多数同事用的是Eclipse.后来,公司新来了一个应届生同事,他告诉我,他用的工具是IntelliJ IDEA,完全没有用过Eclipse.给我说了IntelliJ IDEA的各种好处. 我虽然知道IntelliJ IDEA有很多好处,但是我不愿意改变,因为要我把开发工具换成IntelliJ IDEA,就表示我要离开自己的认知边界,这会让我很痛苦. IntelliJ IDEA 一开始我对IntelliJ IDEA有一些好奇,于是我尝试看一下网上的教程,并且安装了IntelliJ IDEA,尝试使用,但是很不舒服,因为两个工具的快捷键完全不一样,高频小套路也完全不一样,使用这个工具开发感觉自己就是个菜鸟. 尝试了好几次用IntelliJ IDEA开发,但是都放弃了.因为一开始总是在百度怎么使用IntelliJ IDEA,很浪费时间. 于是我重新下载安装了MyEclipse的最新版,并放弃了IntelliJ IDEA,告诉应届生同事,其实Eclipse也很好用. 后来我换工作了,我惊奇的发现,这家公司所有的程序员都在用IntelliJ IDEA,而只有我在用MyEclipse,我想他们讨教,他们说他们之前也有用Eclipse的,但是转成IntelliJ IDEA. 后来我也强迫自己转IDEA,让自己从零开始,卸载Eclipse.不到1天的时间,我掌握了IntelliJ IDEA的绝大多数高频小套路. 而我也发现我的开发效率得到了指数级的增长,而不是一点点的增长. 我认为是IntelliJ IDEA软件优化的比Eclipse更好,软件更加流畅并且是专门为程序开发人员设计.Eclipse在软件流畅和提升效率方面相比IntelliJ IDEA稍弱一点. 我从中得到了什么? 每个人会根据自己所在的群体和经验形成自己的认知边界,一个人的认知边界决定了一个人的认知高度 成长和进步的过程就是打破自己认知边界的过程 认知边界从内向外打破非常难 认知边界从外向内打破比较容易,比如有人带你,加入新的社群,换一个环境 每当打破自己的认知边界,就能获得数十倍到一百倍的增长.",
    "linkUrl" : "https://www.jianshu.com/p/bfdafd7e63d6"
}
  1. 关于ES 5.x版本以上的,统计次频的字段需要开启fielddata
PUT renrensou/_mapping/renrensou_v1/
{
  "properties": {
    "title": { 
      "type":     "text",
      "analyzer": "ik_max_word",
      "fielddata": true
    }
  }
}
  1. 统计自己文章中的词频,显示结果会包含关键字和词频数量
GET /renrensou/renrensou_v1/_search
{  
    "size" : 0,
    "aggs" : {   
        "messages" : {  
            "terms" : {   
                 "size" : 100,
              "field" : "content",
                "include" : "[\u4E00-\u9FA5][\u4E00-\u9FA5]"
            }  
        }  
    },
   "highlight": {
     "fields": {
      "message": {}
    }
  }     
}
1.png

05

结果显示我写的文章里面最多的词多是一些连接词,比如 如果,但是...

当然具体分析的时候可以去除掉这些连接词.下面是我筛选出来的排名前5的有意义词汇

          [{
               "key": "我们",
               "doc_count": 28
            },
            {
               "key": "时间",
               "doc_count": 24
            },
            {
               "key": "自己",
               "doc_count": 24
            },
            {
               "key": "过程",
               "doc_count": 24
            },
            {
               "key": "实现",
               "doc_count": 23
            }]

当然是这是ES很小的一个使用方法,使用ElasticSearch也可以打造一个专属自己的搜索引擎.

你可能感兴趣的:(使用ElasticSearch分析自己的语言)