茉莉Python

voidqueens@hotmail.com

0%

#!groovy
def remote = [:]
remote.allowAnyHosts = true

pipeline {
agent {node {label ‘master’}}
environment {
PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin”
}
parameters {
string defaultValue: ‘http://svn.sogou-inc.com/svn/mobilesearch/web/wap_searchhub/trunk', description: ‘svn代码’, name: ‘svn’, trim: true
string defaultValue: ‘10.134.30.112’, description: ‘ip地址’, name: ‘ip’, trim: true
string defaultValue: ‘root’, description: ‘用户名’, name: ‘user’, trim: true
string defaultValue: ‘noSafeNoWork@2014’, description: ‘密码’, name: ‘password’, trim: true
}

stages {
    stage('preprocess') {
      steps {
             withCredentials([sshUserPrivateKey(credentialsId: 'sh_fugailv', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'userName')]) {
                script {
                    remote.name = "${ip}"
                    remote.host = "${ip}"
                    remote.user = userName
                    remote.password = "${password}"
                    remote.svn="${svn}"
                    remote.allowAnyHosts = true
                }

                sshCommand remote: remote, command: """
                    cd /search/odin/gongyanli/searchhub/pc
                    sh downData.sh
                    cd /search/odin/gongyanli/searchhub/pc/web_test
                    svn sw ${svn} --username 'gongyanli' --password 'Gyl421498170'
                    make -j
                    sh stop.sh
                    sh start_centos7.sh
                """
            }

        }
    } 
stage('mem') {
      steps {
             withCredentials([sshUserPrivateKey(credentialsId: 'sh_fugailv', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'userName')]) {
      script {
        remote.name = "${ip}"
          remote.host = "${ip}"
          remote.user = userName
        remote.password = "${password}"
        remote.svn="${svn}"
        remote.allowAnyHosts = true
      }

      sshCommand remote: remote, command: """
        cd /search/odin/gongyanli/searchhub/pc
        sh mem.sh &
        """
      }

        }
    } 
}

}

本文首发于我的博客:gongyanli.com

参考博客:http://www.shareditor.com/blogshow?blogId=65

前言:NLTK(Natural Language Toolkit) 是一个用于构建处理人类语言数据的python应用的开源平台。它提供了超过50多个素材库和词库资源的易用接口,其中有很多文本处理库,可以用来给文本分类,符号化,提取词根,贴标签,解析,语义推理,或者打包成工业级的自然语言处理库。本文简单介绍了nltk的安装与使用,希望对小伙伴们有用。

一、NTLK库安装

$ pip install nltk

二、NLTK模块与功能介绍

语言处理任务            NLTK模块                功能描述
获取语料库            nltk.corpus            语料库和词典的标准化接口
字符串处理            nltk.tokenize,        分词、句子分解
                    nltk.stem            词干化
搭配研究                nltk.collocations    t-检验、卡方、点互信息
词性标注                nltk.tag            n-gram、backoff、Brill、HMM、TnT
分类                    nltk.classify        决策树、最大熵、朴素贝叶斯、EM、K-Means
                    nltk.cluster        
分块                    nltk.chunk            正则表达式、n-gram、命名实体
解析                    nltk.parse            图标、基于特征、一致性、概率性、依赖项
语义解释                nltk.stem            λ演算、一阶逻辑、模型检验
                    nltk.inference        
指标测评                nltk.metrics        精度、召回率、协议系数
概率与估计            nltk.probalility    频率分布、平滑概率分布
应用                    nltk.app            图形化的关键词排序、分析器、wordnet查看器
                    nltk.chat
语言学领域的工作        nltk.toolbox        处理STL工具箱格式的数据

三、下载书籍

$ python
>>> import nltk
>>> nltk.download()
选择语料库--book进行下载
>>> nltk.book import *
>>> text1
<Text: Moby Dick by Herman Melville 1851>

四、NLTK基本使用

1.搜索文本
    >>> text1.concordancd("next")
    > 显示20个包含next的语句上下文
2.搜索相关词
    >>> text1.similar("boat")
    >查找出boat的近义词等相关词
3.查找词在文章中的位置
    >>> text1.dispersion_plot(["bext","city","America"])
    > 如果出现错误,请记得安装matplotlib
    > pip install matplotlib
4.词统计
    len(text1):返回总字数
    set(text1):返回文本的所有词集合
    len(set(text4)):返回文本总词数
    text4.count("is"):返回“is”这个词出现的总次数
    FreqDist(text1):统计文章的词频并按从大到小排序存到一个列表里
    fdist1 = FreqDist(text1);fdist1.plot(50, cumulative=True):统计词频,并输出累计图像
    fdist1.hapaxes():返回只出现一次的词text4.collocations():频繁的双联词

五、NLTK–文本预处理

1.分词
(1)英文分词

方法1:将文本分割成单词
split()
方法2:将文本分割成句子
from nltk.tokenize import sent_tokenize
sent=sent_token(text)
方法3:将文本分割成单词
from nltk.tokenize import word_tokenize
word=word_tokenize(text)

(2)非英文分词

from nltk.tokenize import sent_tokenize
sent=sent_token(text,"french")

2.词干化处理(stem)

文档分词后一般要进行词干化处理,词干化处理就是将名词复数变为单数,动词不同时态变为基本时态等。

from nltk.stem import PorterStemmer
from nltk.corpus import wordnet as wn
from nltk import PorterStemmer
from nltk.stem.lancaster import LancasterStemmer

def stemWords(self,wordsList):

    # 方法1
    porter=PorterStemmer()
    result=[porter.stem(w) for w in wordsList]
    # 方法2
    stemWords=[]
    for words in wordsList:
        stemWords+=[[wn.morphy(w) for w in words]]
    return stemWords
    # 方法3--支持非英文词干化提取
    stemmer=SnowballStemmer("english")
    result=stemmer.stem("imaging")
    # 方法4
    lancaster_stemmer = LancasterStemmer()
    lancaster_stemmer.stem(‘saying’)

3.单词变体还原–将单词还原成一个真实的单词
当用PorterStemmer和PorterStemmer对imaging这个单词进行词干化处理时,得到的结果是imag,显然这并不是我们想要的结果,所以这时候就很有必要进行还原。
有时候将单词变体还原时,总是得到同样的词,这是因为语言默认部分为名词,要想得到动词,使用pos=”v”

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('imaging', pos="v"))

pos="v"--动词
pos="n"--名词
pos="a"--形容词
pos="r"--副词

4.停用词处理(stopwords)

from nltk.corpus import stopwordds
stopwordset=stopwords.words("english")
clean_tokens=list()
for token in tokens:
    if token not in stopwordset:
        clean_tokens.append(token)
# clean_list=[token for tokens in text if token not in stopwordset]

5.同义词处理

# WordNet是一个为自然语言处理而建立的数据库,包含一些同义词组及简短定义
from nltk.corpus import wordnet
# 获取单词的定义和示例
  syn = wordnet.synsets("pain")
print(syn[0].definition())
print(syn[0].examples())
# 获取同义词
synonyms = []
for syn in wordnet.synsets("computer"):
    for lemma in syn.lemmas():
        synonyms.append(lemma.name())
print(synonyms)

6.反义词处理

from nltk.corpus import wordnet
  antonyms = []
for syn in wordnet.synsets("small"):
    for l in syn.lemmas():
        if l.antonyms():
            antonyms.append(l.antonyms()[0].name())
print(antonyms)

7.词性标注(pos tagger)

import nltk
tokens=nltk.pos_tag(tokens) # 进行词性标注

# 查看相关说明文档
nltk.help.upeen_tagset("JJ")
nltk.help.upeen_tagset("IN")
nltk.help.upeen_tagset("NNP")

8.去掉数字标点和非字母字符

def CleanLines(self,line):  
    identify = string.maketrans('', '')  
    delEStr = string.punctuation +string.digits  #ASCII 标点符号,数字    
    cleanLine =line.translate(identify,delEStr) #去掉ASCII 标点符号  
   return cleanLine  

9.拼写检查

def WordCheck(self,words):#拼写检查  
    d = enchant.Dict("en_US")  
    checkedWords=()  
    for word in words:  
        if not d.check(word):  
            d.suggest(word)  
            word=raw_input()  
        checkedWords = (checkedWords,'05')  
   return checkedWords  

六、NLTK结合Stanford NLP工具包进行文本处理

待完成

本文首发于我的博客:gongyanli.com

github:https://github.com/Gladysgong/3D_earth_all

csdn: http://blog.csdn.net/u012052168/article/details/78459872

前言:因为要做一个3D地球,之前也没怎么用过echarts,再加上就是个业余前端水平,所以折腾了好久,代码下载下来可以直接运行,具体情况看我每个里面怎么说的。小伙伴们可以自己先研究一下,等有时候我详细代码注释一下。

1.worldFlights

所用框架:philogl
位置:examples\worldFlights
说明:philogl (https://github.com/senchalabs/philogl) 官方项目下的一个demo,把全球飞行航线在3d地球上表示出来。

2.airline_china

所用框架:philogl
说明: 一位博主基于philogl官方项目的demo改写而成,把全球的飞行路线改为了中国飞行路线(参照:examples\worldFlights)

3.3dmap

所用框架:echart-x
说明:利用echart-x制作的3d地球,其数据是把根据经纬度的高低来对国家进行分类(高、中、低)

4.echarts-gl

说明:echarts-gl官方项目,我使用npm拉取代码后,依然运行有问题,显示不清楚,所以弃用,可能还是我自己哪里有问题,但是没找出来。

5.echarts3D-globe

所用框架:echarts-gl
说明:一位童鞋(不好意思,等我有时间把你的gith补上,么么哒)利用echarts-gl而制作的3d地球,模拟的是网络攻击的数据,但我发现依然使用的是飞行航线的数据,所以这个数据究竟能否反应网络攻击有待证实。

6.earth

所用框架:echarts-gl
说明:基于echarts3D-globe重写了一个适合自己需要的精简的地球

7.earth-x

所用框架:echarts-x
说明:基于3dmap重写了一个适合自身需要的最终地球。

本文首发于我的博客:gongyanli.com
github: https://github.com/Gladysgong/Gladysgong.github.io

一、快速创建个人Github Pages

1.什么是Github Pages

GitHub Pages 本用于介绍托管在GitHub的项目,不过由于他的空间免费稳定,很适合用来搭建一个博客。

每个帐号只能有一个仓库来存放个人主页,而且仓库的名字必须是username/username.github.io,这是特殊的命名约定。你可以通过http://username.github.io 来访问你的个人主页,比如我的就是gladysgong.github.io。

这里特别提醒一下,需要注意的个人主页的网站内容是在master分支下的。

2.创建自己的Github Pages

新建代码仓库(repository),此处命名格式有限制的,形如username.github.io

这里写图片描述
这里写图片描述

github page site已经建好,浏览器输入例如http://username.github.io,(该示例界面为空),可以自己push一个index页面来显示内容,开启你的blog把!

我的blog是gladysgong.github.io,可以打开看一下哟!如果文章对您有帮助,右侧fork进入star我一下,我会美美哒一天。

3.如何搭建一个独立博客——简明Github Pages与Hexo教程

二、搭建环境

1.安装node.js
2.安装npm
3.安装git,如果前面要commit、push,那之前就应该安装
4.github账户配置

三、Hexo安装

$ cd d:/hexo
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo g # 或者hexo generate
$ hexo s # 或者hexo server,可以在http://localhost:4000/ 查看(hexo s -p 8023端口被占用时)

这里写图片描述

四、Hexo主题切换

Hexo默认主题是landscape,大家可以切换成为next或者yilia的风格
1.安装主题

$ hexo clean
$ git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia

2.启用主题

修改Hexo目录下的_config.yml配置文件中的theme属性,将其设置为yilia。

3.更新主题

$ cd themes/yilia
$ git pull
$ hexo g # 生成
$ hexo s # 启动本地web服务器

4.打开http://localhost:8023/ ,我们就会看到一个全新的界面。

五、部署Hexo到Github Pages

1.部署Hexo到Github Pages上的原理

a.第一步中我们在Github上创建了一个特殊的repo(gladysgong.github.io)一个最大的特点就是master中的html静态文件,可以通过链接http://gladysgong.github.io来直接访问。
b.Hexo -g 会生成一个静态网站(第一次会生成一个public目录),这个静态文件可以直接访问。
c.将hexo生成的静态网站,提交(git commit)到github上。

2.使用hexo deploy部署到github

在配置文件_config.xml中以下改动:
deploy:
  type: git
  repo: git@github.com:gladysgong/gladysgong.github.io.git
  branch: master

3.安装扩展(不安装会出错)

$ npm install hexo-deployer-git --save

4.在命令行中执行

hexo d

六、申请域名https://sg.godaddy.com/zh/

可以申请的地方很多,我选择的是goDaddy,注册登录选择域名,支付宝付款,ok。

七、DNS解析

1.注册DNSpod
2.进入域名解析,输入你的域名,添加记录进行配置
这里写图片描述
3.记录类型

记录类型A代表指向github pages所提供的ip
记录类型CNAME代表指向username.github.io
用A类型的话,当github pages所提供的ip改变的话,你就需要来改变此处的ip,用CNAME则不需要。

4.创建CNAME

$ cd source
$ 创建CNAME
$ 内容为你的域名(比如我的:gongyanli.com)
$ commit & push

八、hexo部署后把原来的仓库覆盖

1.使用Hexo搭建博客需要区分【博客源代码】和【博客生成代码】

『博客源代码』:Hexo的源码,包括themes目录(博客模板),source目录(使用MarkDown写的博客)等

『博客生成代码』:执行hexo generate或者hexo server命令生成的代码,是Hexo自动生成的,在public目录里面。

『博客源代码』需要使用Git做版本管理,而『博客生成代码』需要使用Git部署。因此容易混淆。

2.方法1:使用2个不同的Git仓库分别管理『博客源代码』和『博客生成代码』

在GitHub新建一个仓库,然后将『博客源代码』同步到新项目。『博客生成代码』仍然由gladysgong/gladysgong.github.io部署。

3.方法2:使用同一个Git仓库的2个不同的Git分支分别管理『博客源代码』和『博客生成代码』

修改Hexo的配置文件_config.yml,将『博客生成代码』部署到gladysgong/gladysgong.github.io仓库的develop分支:
deploy:
    type: git
    branch: develop
    repo: https://github.com/gladysgong/gladysgong.github.com

九、bug

1.hexo报错:

YAMLException: cannot read a block mapping entry; a multi line key may not be an implicit key at line 5, column 1: # Site

YAMLException: cannot read a block mapping entry; a multi line key may not be an implicit key at line 13, column 1: # URL
配置文件:_config.yml  中 # Site #URL 属性设置后面的:需要有空格再填写内容!!!

2.npm各种提示权限不够,windows下即使开了administrator也提示权限不够

无奈,卸载npm,用淘宝npm镜像重装一个,安装后一路畅通。
安装方法:npm install -g cnpm --registry=https://registry.npm.taobao.org
参考链接:http://npm.taobao.org/
之后所用命令只需改为cnpm即可

3.hexo s运行时默认4000端口被占用

尝试过解除端口,无奈我的4000端口被360浏览器占用
hexo s -p 8022
重启一个8022或者任意一个没被占用的端口即可