一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载

频道:今日头条 日期: 浏览:297

爱你们♥

作者:Ali Alavi、Yumi、Sara Robinson

编译:大众号进行了全面收拾

刚刚巴菲特开完股东大会,特朗普又在Twitter来了一出。让股票市场跌宕起伏。

这也诞生了一个新词:

一推就倒

▍描述一条Twitter就吓得一败涂地,溃散倒下的东西,多用于股市。

接下来咱们就运用技能手段,依据Python,树立一个东西,能够阅览和剖析川普的Twitter。然后判别每条特定的Twitter是否具有川普自己的性情。

一同咱们还结合了其他的办法,包括Deep Le雪菲中药祛斑胶囊arningMachine LearningNLP、LSTM等依据PythonKeras等。

万字干货

对川普的Twitter做个全面剖析!

让咱们今后边临川普冷不丁的Twitter有所准备!

剖析一

过程一

为了简略起李大壮见,咱们将每条Twitter分化成单词。

如你所见,咱们手动仿制了Trump的一条Twitter,将其分配给一个变量,并运用split()办法将其分化为单词。split()回来一个列表,咱们称之为tweet_words。咱们能够运用len函数核算列表中的项数。在第4行和第5行中,咱们打印前面过程的成果。留意第5行中的str函数。为什么在那里?

最终,在第9行中,咱们循环遍历tweet_words:也便是说,咱们逐一遍历tweet_words项,将其存储在w中,然后在第10行和第11行处理w。所以,第10行和第11行被履行了很屡次,每一次都有不同的w值。你应该能够说出第10行和第11行是做什么的。

将此代码保存为first.py。假如你运用Mac或Linux,请转到终端,在保存文件的文件夹中,输入python3.6 first.py,然后按Enter键。在Windows上,您需求在指令提示符下键入py first.py。

过程二

在这儿,咱们测验改善咱们的代码,这样咱们就能够知道一条Twitter是“坏”仍是“好”。

这儿的主意是创立两个由好词和坏词组成的列表,并依据它们从这些列表中包括的词数添加或削减推文的值。

因而,在第16行和第17行中,咱们初始化了两个值,每个值标明一条Twitter中好词和坏词的数量。在第19行和第20行中,咱们创立了好单词和坏单词的列表。当然,这些都是十分片面的列表,所以请依据你自己的个人定见随意更改这些列表。

在第21行,咱们逐一检查了Twitter中的每个单词。在第22行打印之后,咱们检查这个单词是否存在于good_words或bad_words中,并别离添加number_of_good_words或number_of_bad_words。如你所见,要检查列表中是否存在项,能够运用in关键字。

别的,请留意if的语法:你需求在条件后边输入colon (兄妹一家亲:)。而且,在if中应该履行的一切代码都应该缩进。

过程三

到目前为止,咱们的假定是,词语不是好便是坏。但在实际国际中,词语的权重各不相同:awesome比alright好,bad比terrible好。到目前为止,咱们的代码还没有考虑到这一点。

为了处理这个问题,咱们运用名为字典的Python数据结构。字典是一个条目列表,每个条目都有一个键和一个值。咱们将这些项称为键值对。因而,字典是键值对的列表(有时称为键值存储)。

咱们能够经过在花括号中放入key:values列表来界说字典。请看下面的代码:

正如你所看到的,咱们只运用了一个字典。给欠好的词一个负的权重,好的词一个正的权重。保证值在-1.0和+1.0之间。稍后,咱们运用word_weights字典检查其间是否存在单词,并核算分配给单词的值。这与咱们在前面的代码中所做的十分类似。

这段代码的另一个改善是它的结构更好:咱们测验将代码的不同逻辑部分别离到不同的函数中。函数是用def关键字界说的,后跟着一个函数名,后边跟着圆括号中的零个或多个参数。

过程四

咱们的代码中依然存在一些显着的缺点。例如,咱们能够假定一个名词,无论是奇数仍是复数,都具有相同的值。例如,单词 tax taxes 被解说为两个不同的单词,这意味着咱们的字典中需求有两个不同的条目,每个条目对应一个。为了防止这种冗余,咱们能够测验对Twitter中的单词进行词干处理,这意味着测验将每个单词转换为其词根。例如,tax 和 taxes 都将被归入tax。

这是一个十分杂乱的使命:自然言语十分杂乱,构建一个stemmer需求花费很多的时刻和精力。此外,这些使命曾经也做过。那么,为什么要从头创造轮子,尤其是如此杂乱的一个?相反,咱们将运用其他程序员编写的代码,并将其打包到名为NLTK的Python模块中。

装置NLTK

咱们能够在指令行中运转pip install nltk来装置NLTK。可是,这将测验在咱们的体系上大局装置模块。这并欠好:咱们的体系上或许有运用相同模块的程序,装置相同模块的新版别或许会带来问题。此外,假如咱们能够将一切模块装置在代码地点的同一目录中,则只需仿制该目录并在不同的机器上运转。

因而,咱们从创立一个虚拟环境开端。

首要,保证与代码地点的文件夹相同。然后在终端中输入以下内容:

假如你在Windows上,在指令提示符中输入以下内容:

这将在当前文件夹中创立Python的本地副本及其所需的一切东西。

现在,需求通知你的体系运用Python的这个本地副本。在Mac或Linux上,运用以下指令:

Windows:

假如一切操作都正确,应该会看到指令提示符发作了更改。最有或许的是,您应该在指令行的最初看到(env)。

咱们运用pip指令装置Python包。可是首要,让咱们运转以下指令来保证咱们运用的是最新版别的pip:

当你运用Mac时,要保证运转以下指令:

现在,你可问渔莲说以运用pip指令安全地装置NLTK:

最终,运转Python解说器,运转Python(假如是在Windows上,则运转py),并在解说器中输入以下指令:

应该会弹出一个窗口。 挑选包括popular标识符的项目,然后单击download。这将下载popularNLTK模块运用的一切必要数据。

现在咱们现已装置了NLTK,让咱们在代码中运用它。

运用NLTK

为了运用Python中的模块,咱们需求首要导入它。在第11行,咱们通知Python要运用函数word_tokenize,在第12行中,咱们说要运用nltk.stem.porter模块中的一切内容。

在第14行中,咱们运用PorterStemmer创立了一个stemmer方针,在第18行中,咱们运用word_tokenize而不是split来以更智能的办法将Twitter分化为单词。

最终,在第31行,咱们运用了stemmer.stem查找单词的词干,并将其存储在stemmed_word中。其他的代码与前面的代码十分相徐湘婷似。

你应该记住,咱们在第20到24行中运用了一个词对词的字典。在咱们的程序中有这么长的单词列表是一种欠好的做法。想想看,当咱们决议更改单词到值的字典时(比方添加一个单词或更改一个单词的权重),咱们需求翻开并修改代码。这是有问题的,由于:

1、咱们或许会过错地更改代码的其他部分。

2、添加的单词越多,代码的可读性就越差。

3、不同的人运用相同的代码或许想要界说不同的字典(例如,不同的smartdeblur言语、不同的权重……),假如不更改代码,他们就无法做到这一点。

由于这些(以及更多)原因,咱们需求将数据从代码中别离出来。换句话说,咱们需求将字典保存在独自的文件中,然后将其加载到程序中。

文件有不同的格局,这阐明数据是怎样存储在文件中的。例如,JPEG、GIF、PNG和BMP都是不同的图画格局,用于阐明怎样在文件中存储图画。XLS和CSV也是在文件中存储表格数据的两种格局。

在本例中,咱们期望存储键值数据结构。JSON数据格局是存储这类数据最常用的数据格局。下面是一个JSON文件的比如:

正如你所看到的,它看起来就像一个Python字典。因而,持续创立一个新文件,并将其命名为“word_weight .json”。

现在,咱们需求做的便是通知Python将这个文件加载到word_weights中。

翻开文件

为了翻开文件,咱们运用open函数。它翻开一个文件并回来一个file方针,该方针答应咱们对文件履行操作。每逢咱们翻开一个文件,咱们需求封闭它。这保证文件方针上的一切操作都被刷新到文件。

在这儿,咱们期望加载文件内容并将其分配给一个变量。咱们知道文件的内容是JSON格局。所以咱们需求做的便是导入Python的json模块,并将它的load函数运用到咱们的file方针上:

但清晰运用close或许会有问题:在大型程序中,很简略忘掉封闭文件,而而且或许会发作封闭在一个块内部,而这个块一向没有履行(例如if)。

为了防止这些问题,咱们能够运用with关键字。担任封闭文件。

因而,当代码退出with块时,运用with翻开的文件将主动封闭。保证在处理文件时一直运用with编码方式。很简略忘掉封闭文件,这或许会带来许多问题。

咱们能够进一步改善这段代码,将加载JSON文件和剖析Twitter转换为两个函数。

现在,咱们的程序所做的便是分配一个Twitter字符串,加载一个单词权重字典,并运用加载的字典剖析该Twitter字符串。

从Twitter读取推文

为了从Twitter读取数据,咱们需求拜访它的API(运用程序编程接口)。API是运用一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载程序的接口,开发人员能够运用它拜访应春卷制皮机用程序的功用和数据。

一般,Twitter、Facebook等公司答应开发人员经过API拜访用户数据。可是, 你或许知道,用户数据对这些公司十分有价值。此外,当触及到用户数据时,许多安全和隐私问题就会呈现。因而,这些公司期望盯梢、验证和约束开发人员及其运用程序对其API的拜访。

因而,假如您想拜访Twitter数据,首要需求登录Twitter(假如您没有Twitter帐户,则需求登录),然后拜访https://apps.twitter.com/。单击Create New App按钮,填写表单,然后单击Create your Twitter Application按钮。

在新页面中,挑选API Keys选项卡,并单击Create my access token按钮。将生成一对新的拜访令牌,即Access令牌密钥。。将这些值与API密钥和API密钥一同仿制。

现在,发动终端或指令提示符,转到作业目录,然后激活虚拟环境(提示:假如你在Mac / Linux上运转.env / bin / activate,假如你在Windows上运转env / s / activate)。现在,运用pip装置python-twitter包:

这将装置一个popular包,用于在Python中运用Twitter API。

https://github.com/bear/python-twitter

现在,让咱们快速测验一下咱们的设置。

经过输入Python来运一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载行python解说器(假如在Windows上,则输入py)。输入以下内容,并运用上一步仿制的值替换你的:

_consumer_key、YOUR_CONSUMER_SECRET、YOUR_ACCESS_TOKEN和YOUR_ACCESS_TOKEN_SECRET:

咱们还能够运用GetUserTimeline办法Twitter API获取用户的tweet。例如,要想获取川普的最终一条推文,只需运用以下内容:

这将为咱们供给一个包括一个项目的列表,其间包括关于川普最终一条推文的信息。咱们能够得到关于Twitter的不同信息。例如:last_tweet.full_text将供给他最终一条推文的全文。

运用咱们取得的关于Twitter API的常识,咱们现在能够更改代码来从Twitter加载推文字符串。

当然,如前所述,在代码中存储数据是一种欠好的做法。当这些数据触及某种隐秘时,状况就更糟了。可是咱们知道怎样正确地做。咱们从.cred.json加载Twitter凭证。只需创立一个新的JSON文件,将密钥和隐秘存储在字典中,并将其保存为.cred.json:

许多推文包括非字母字符。例如,一条推文或许包括&、>或<。这样的字符被Twitter转义白道彬。这意味着Twitter将这些字符转换为html安全字符。

例如,像 Me & my best friend <3这样的推文被转换为Me & my best friend <3。为了将其转换回本来的标明方式,咱们需求运用html模块中的unescape函贺灿梅数撤销对推文的转义。

试着运转这段代码。你应该能够判别特朗普最新的推文是否是他的风格。

先听首歌,让咱们开端下面另一个剖析。

剖析二

前语

先看看下面三篇文章:

1、https://machinelearningmastery.com/develop-word-based-neural-language-mode美津植秀泡泡氧气面膜ls-python-keras/

2、https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html

3、https://machinelearningmastery.com/text-generation-lstm-r穿越之我是素锦妹妹ecurrent-neural-networks-python-keras/

咱们运用川普的最新约3000条推文来练习模型。

2.7.13 |Anaconda 4.3.1 (64-bit)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

Using TensorFlow backend.

keras 2.0.6

tensorflow 1.2.1

numpy 1.11.3

1.2.1

从一个比如说起

单字输入单字输出模型

第一个练习数据是一个由11个单词和三个感叹号组成的语句。咱们将运用这句话创立一个简略的LSTM模型。模型应该能够过度拟兼并仿制这个语句!

首要创立Tokenizer方针。Tokenizer在word和idnex之间创立映射。映射记录在字典中:key = words, value = index。字典能够经过“tokenizer.word_index”拜访字典。

分词器。texts_to_sequences将字符串转换为索引列表。索引来自tokenizer.word_index。你能够看到索引是依照语句中呈现的单词昭和枯草哀歌的顺序排列的。

将词汇表巨细界说为仅有单词的数量+ 1。这个vocab_size用于界说一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载要猜测的类的数量。加1有必要包括“0”类。word_index.values()没有运用0界说单词。因而,因而咱们能够将此类0用于占位符类(即填充类)。

准备好练习数据X, y,当咱们创立一个单词输入一个单词输出模型时:

((11,), (11,))

留意,num_class被设置为vocab_size,即N个仅有单词+ 1。y的打印标明,在第0列和第1列中没有包括索引的行。 这是由于:

界说模型和练习数据

模型很简略;一一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载个嵌入层,接着是一个LSTM层,然后是前馈神经网络层。

Word embedd强力透骨膜ings是一种自然言语处理技能,旨在将每个词的语义映射到一个几许空间。

参数

练习成果标明,该模型能较好地猜测练习语句的准确性。

现在检查一下咱们的模型能否正确生成练习过的语句。生快汇宝成一个以“I”最初的13个单词的语句。它成功地生成了原句。本来的语句有12个单词,所以在“yes”之后猜测的第13个单词能够是任何单词。在这种状况下,yes之后的单词被猜测为to。可是假如你用不同的初始值练习,这个值就会改动。

看一下前面那个单词的概率散布。

除“yes”外,一切单词的附加概率散布都有较大的峰值,其他地方的概率散布比较陡峭。峰坐落下一个单词。例如,单词“deep”之后的概率散布峰值呈现在“learning”。可是,“yes”之后单词的概率散布是适当平整的。

练习一个NLP模型依据川普Twitter

在前面的比如中,咱们只要一个语句来练习模型。我现在将运用大约3000条来自川普的推文来练习一个深度学习模型。

数据

让咱们从dataframe中随机挑选的10条推文。它显现推文包括许多仅呈现一次的术语或对猜测不感兴趣的术语。 所以咱们先整理文本。

推文清洁技巧:

咱们发现这些整理关于创立有意义的模型十分重要。不进行清洗,模型的练习精度进步不超越0.05。咱们企图经过大幅添加模型的杂乱性来处理这个问题,可是并不是很成功。好像删去不经常呈现的单词是十分有用的办法。

这是有道理的,由于删去这些不常呈现的单词会使Tokenizer.word_index的巨细削减20%以上(1 - 5689/7300)。

现在,咱们创立一个单词和索引之间的映射。Tokenizer很好地过滤特别字符。

运用Tokenizer的单词索引字典,只用单词indecies标明每个语句。 让咱们看看语句是怎样用单词indecies标明的。

Total Sequences: 50854

序列长度因数据而异。咱们加“0”使每个语句相同。

将方针变量转换为一个独热编码向量。

练习模型

经过添加密布嵌入向量的维数,添加LSTM中躲藏单元的数量,使模型比之前的比如愈加杂乱。

练习精度不断进步,但验证精度没有显着进步。考虑到练习数据量小,这是合理的;模型过度拟合。

验证准确性和练习准确性

皮德尔

运用主成分剖析法对词向量的维数进行降维处理,并在二维空间中对其进行可视化处理。

Observations

输入一个词,看后边AI会生成什么。

1、当“Make America”作为前两个词呈现时,人工智能简直总是猜测“再次巨大”作为下一个词。

2、当供给“North”时,下一个单词简直总是“Korea”,后边一般是一些否定句。

3、以“Omaga is”最初的语句往往具有负面意义。

在来听首歌

剖析三

咱们还将特朗普和希拉里的推文与自然言语处理进行比较

咱们剖析了9月9日至10日有关两位提名人的30万条推文的数据。

推文中以希拉里或特朗普为主题的最常用描述词

推文中以希拉里或特朗普为主题的抢手动词

最常用的表情

运用什半路夫夫么东西剖析?

Twitter流媒体API:获取一切推举推文(https://developer.twi601601商城tter.com/en/docs)

云自然言语API:解析推文并获取语法数据(https://cloud.google.com/na雅培金钻tural-language/)

BigQuery:剖析推文语法数据(https://cloud.google.com/bigquery/)

Tableau和一些Java技巧:数据可视化(https://www.tableau.com/solutions/google)

运用带有Node.js的Twitter流媒体API对说到希拉里或特朗普的推文进行了流媒体处理。

一旦咱们收到一条推文,咱们就把它发送到自然言语API进行语法剖析。

Cloud Natural Language API:解析推文

新的Cloud Natural L一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载anguage API有三种办法——语法注释、实体和情感剖析。这儿咱们将要点介绍语法注释,语法注释呼应供给关于语句结构和每个单词的词性的详细信息。推文常常短少标点符号,语法上也不总是正确的,可是NL API依然能够解析它们并提取语法数据。举个比如,这是发布的30万条tweet中的一条

https://www.newsweek.com/trump-lone-holdout-pence-releases-tax-returns-497244)

Donald Trump is the lone holdout as VP nominee Mike Pence releases his tax returns — Newsweek

这儿是从该API发回的语法数据可视化:

API的JSON呼应供给了上面依靠联系解析树中显现的一切数据。它为语句中的每个符号回来一个方针(符号是一个单词或标点符号)。下面是上面比如中一个令牌的JSON呼应示例,在本例中是单词“release”:

让咱们分化一下呼应:tag通知咱们“release”是一个动词。label通知咱们这个单词在上下文中所扮演的人物。这儿是ADVCL,它代表状语从句修饰语。headTokenIndex指示指向此符号的弧在依靠联系解析树中的方位,每个符号作为一个索引。引理是单词的根方式,假如要核算单词呈现的次数并期望兼并重复的单词,这是十分有用的(请留意,“releases” is “release”)。

下面是咱们对NL API的恳求:

现在咱们现已将一切语法数据都作为JSON,有无数种办法能够剖析它。咱们没有在tweet呈现时进行剖析,而是决议将每条tweet刺进到一个BigQuery表中,然后找出怎样剖析它。

BigQuery:剖析推文中的言语趋势

咱们创立了一个包括一切tweet的BigQuery表,然后运转一些SQL查询来查找言语趋势。下面是BigQuery表的方式:

咱们运用g一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载oogle-cloud npm包将每条推文刺进到表格中,只需求几行Java代码:

表中的token列是一个巨大的JSON字符串。走运的是,BigQuery支撑用户界说的函数(UDF),它答应你编写Java函数来解析表中的数据。

https://cloud.google.com/bigquery/user-defined-functions

为了辨认描述词,咱们查找NL API回来的一切符号,其间ADJ作为它们的partOfSpeech符号。但我并不想要一切收集到的推文中的描述词,咱们只想要希拉里或特朗普作为语句主语的推文中的描述词。NL API使运用NSUBJ((nominal subject)标签过滤契合此规范的推文变得很简略。

https://me一击男,奶牛,市盈率-雷竞技app_雷竞技官方app下载dium.com/google-cloud/comparing-tweets-about-trump-hillary-with-natural-language-processing-a0064e949666

以上是完好的查询(UDF内联)——它核算了一切以希拉里或特朗普为名义主语的推文中的描述词。

为了计算表情符号,咱们修改了我的UDF,查找一切partOfSpeech符号为X(标明外文字符)的符号,并运用正则表达式提取一切表情符号字符:

https://github.com/mathiasbynens/emoji-regex

输出:

数据可视化

BigQuery与Tableau、data Studio和Apache Zeppelin等数据可视化东西很棒。将BigQuery表连接到Tableau来创立上面所示的条形图。Tableau答应你依据正在处理的数据类型创立各种不同的图表。下面是一个饼状图,显现了咱们收集到的推文中的前10个标签(小写字母以消除重复):

为了创立表情包标签云,咱们从表情包查询中下载了JSON:

运用这个便利的Java库生成word云。https://github.com/安进秋lucaong/jQCloud

接下来是什么?

开端运用自然言语API:在浏览器中试用它,深化文档,或许检查这些博客文章以获取更多信息。

1、https://cloud.google.com/natural-language/#nl_demo_section

2、https://cloud.google.com/natural-language/docs/

从BigQuery开端:跟从Web UI快速入门,或许检查Felipe Hoffa的任何中等文章。

3、https://cloud.google.com/bigquery/quickstart-web-ui

剖析四

文本发掘特朗普

一个kaggle的比如,写的也很棒,主张咱们去看原文哦!

部分内容展现:

川普用词最多的

川普的 bigrams

其他

地址:

https://www.kaggle.com/erikbruin/text-mining-the-clinton-and-trump-election-tweets

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间服务。
热门
最新
推荐
标签