Skip to content

Instantly share code, notes, and snippets.

@kenttw
Created December 6, 2015 00:28
Show Gist options
  • Save kenttw/da29b69ede1304888b96 to your computer and use it in GitHub Desktop.
Save kenttw/da29b69ede1304888b96 to your computer and use it in GitHub Desktop.
how-to-build-word2vec
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['/mnt/opt/spark/python/lib/py4j-0.8.2.1-src.zip', '/mnt/opt/spark/python', '', '/usr/local/lib/python2.7/dist-packages/setuptools-18.2-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/local/lib/python2.7/dist-packages/IPython/extensions']\n",
"Welcome to\n",
" ____ __\n",
" / __/__ ___ _____/ /__\n",
" _\\ \\/ _ \\/ _ `/ __/ '_/\n",
" /__ / .__/\\_,_/_/ /_/\\_\\ version 1.4.1\n",
" /_/\n",
"\n",
"Using Python version 2.7.6 (default, Jun 22 2015 17:58:13)\n",
"SparkContext available as sc, SQLContext available as sqlContext.\n"
]
}
],
"source": [
"import os\n",
"import sys\n",
"\n",
"spark_home = os.environ.get('SPARK_HOME', None)\n",
"if not spark_home:\n",
" raise ValueError('SPARK_HOME environment variable is not set')\n",
"sys.path.insert(0, os.path.join(spark_home, 'python'))\n",
"sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))\n",
"\n",
"print sys.path\n",
"\n",
"execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def parseRaw(json_map):\n",
" url = json_map['url']\n",
" content = json_map['content']\n",
"\n",
" return (url,content)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(u'http://maybird.pixnet.net/blog/post/13429404',\n",
" u'<p>\\u4ee5\\u524d\\u8cb7\\u904e\\u7684\\u597d\\u8ce3\\u5bb6<br><br><br>\\u3010\\u552f\\u57f7-\\u6842\\u5713\\u7d05\\u68d7\\u8336\\u3011\\u6842\\u5713\\u539f\\u6c41\\u7cbe\\u7149\\uff0c\\u5167\\u542b\\u7d05\\u68d7\\u6842\\u5713\\uff0c\\u51b7\\u71b1\\u98f2\\u7686\\u5b9c\\uff0c\\u98a8\\u5473\\u91cd\\u73fe\\uff01<br>\\u5728\\u65b0\\u5e97~~\\u53ef\\u4ee5\\u81ea\\u53d6<br><a href=\"http://tw.page.bid.yahoo.com/tw/auction/1174503355\">http://tw.page.bid.yahoo.com/tw/auction/1174503355</a><br><br>\\u8acb\\u4f7f\\u7528yufong.chen@gmail.com ; ysc0313@gmail.com \\u4fe1\\u7bb1\\u806f\\u7d61\\u901a\\u77e5<br>3.\\u65b0\\u5e97\\u81ea\\u53d6\\u53ef\\u514d\\u904b\\uff0c\\u8acb\\u96fb0933092081\\u9673\\u5c0f\\u59d0<br><br>\\u65b0\\u5e97\\u4e2d\\u83ef\\u8def60\\u5df76\\u865f1\\u6a13<!-- more -->\\u4e2d\\u83ef\\u8def\\u9032\\u4f86\\u7b2c\\u4e8c\\u9593</p>\\r\\n<p>&nbsp;</p>\\r\\n<p>\\u5973\\u751f\\u51ac\\u5929\\u559d\\u5f88\\u597d\\u5594\\uff0c\\u4ed6\\u5011\\u5bb6\\u5f88\\u50cf\\u662f\\u4e2d\\u76e4\\uff0c\\u6703\\u9032\\u5f88\\u591a\\u4e0d\\u540c\\u7684\\u8336</p>\\r\\n<p>\\u9019\\u6a23\\u5c31\\u4e0d\\u7528\\u5f88\\u8cb4\\u7684\\u904b\\u8cbb\\u4e86</p>\\r\\n<p>&nbsp;</p>')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import json\n",
"\n",
"pos_rawfile = sc.textFile('../data/2015_half/positvie/*.gz')#.repartition(16)\n",
"jsr = pos_rawfile.map(json.loads)\n",
"pos_contents = jsr.filter(lambda x : 'content' in x).map(parseRaw)\n",
"# pos_contents.cache()\n",
"pos_contents.first()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 將文章的內容與標題作切詞並儲存下來"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"stop_word = set()\n",
"for line in open('../data/stopword.txt'):\n",
" stop_word.add(line.strip())\n",
"stop_sc = sc.broadcast(stop_word)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import urllib2 , StringIO\n",
"def analysis_content(content):\n",
" print '*',\n",
" from bs4 import BeautifulSoup\n",
" soup = BeautifulSoup(content)\n",
" cuts = cuttext_by_server(soup.getText())\n",
"\n",
" return cuts\n",
"\n",
"def cuttext_by_server(text):\n",
" try:\n",
" url = 'http://127.0.0.1:11200'\n",
" req = urllib2.Request(url, text.encode('utf8'))\n",
" response = urllib2.urlopen(req,timeout=120)\n",
" terms = response.read().split(\" \")\n",
" output = StringIO.StringIO()\n",
" for word in terms: #jieba.cut(text,cut_all=False):\n",
" if word in stop_sc.value : continue\n",
" if len(word) <=3 and word != '$' : continue\n",
" output.write(word)\n",
" output.write(' ')\n",
" return output.getvalue()\n",
" except :\n",
" print \"Unexpected error:\", sys.exc_info()[0]\n",
" print \"Error Parse At:\" , text\n",
" return \"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"pos_all_terms = pos_contents.map(lambda x : \n",
" (analysis_content(x[1])))"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"以前 買過 賣家 桂圓紅棗茶 桂圓 原汁 精煉 內含 紅棗 桂圓 熱飲 皆宜 風味 重現 可以 自取 http page yahoo auction 1174503355 yufong chen gmail ysc0313 gmail 信箱 聯絡 通知 新店 自取 可免 請電 0933092081 小姐 新店 中華路 中華路 進來 第二間 女生 冬天 他們 中盤 會進 不同 這樣 不用 貴的 運費 \n"
]
}
],
"source": [
"print pos_all_terms.first()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"pos_all_terms.saveAsTextFile(\"../data/2015_half/positvie/word2vec/terms\")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"f = sc.textFile(\"../data/2015_half/positvie/word2vec/terms/part*\")"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"u'\\u5c0d\\u65bc \\u6253\\u5305 \\u9019\\u7a2e\\u4e8b \\u89ba\\u5f97 \\u5f88\\u591a\\u4eba \\u559c\\u6b61 \\u51fa\\u570b \\u8a0e\\u53ad \\u6253\\u5305 \\u4e0d\\u904e \\u5b8c\\u5168 \\u76f8\\u53cd \\u8d85\\u611b \\u6253\\u5305\\u884c\\u674e xddd \\u6253\\u5305\\u884c\\u674e \\u6700\\u91cd \\u6536\\u7d0d \\u5982\\u679c \\u6771\\u897f \\u901a\\u901a \\u585e\\u9032\\u53bb \\u884c\\u674e\\u7bb1 \\u7d55\\u5c0d \\u7206\\u70b8 \\u51fa\\u570b \\u6709\\u6642\\u5019 \\u9700\\u8981 \\u884c\\u674e\\u7bb1 \\u6253\\u958b \\u6aa2\\u67e5 \\u5982\\u679c \\u6253\\u958b \\u5167\\u8863 \\u5674\\u51fa\\u4f86 \\u5c37\\u5c2c \\u5efa\\u8b70 \\u5927\\u5bb6 \\u4ee5\\u7528 \\u4e00\\u4e9b \\u5851\\u81a0\\u888b \\u6536\\u7d0d\\u888b \\u5206\\u88dd \\u7406\\u8d77\\u4f86 \\u65b9\\u4fbf \\u627e\\u8d77\\u4f86 \\u6bd4\\u8f03 \\u65b9\\u4fbf \\u5916\\u9762 \\u6253\\u958b \\u884c\\u674e\\u7bb1 \\u4e0d\\u7528 \\u64d4\\u5fc3 \\u884c\\u674e \\u9019\\u6b21 \\u4e00\\u500b \\u884c\\u674e\\u7bb1 \\u884c\\u674e\\u7bb1 \\u5f88\\u8cfc \\u63a8\\u85a6 \\u9019\\u500b \\u5c0f\\u92ea \\u7db2\\u683c \\u6536\\u7d0d \\u7d44\\u5408 \\u984f\\u8272 \\u53ef\\u611b \\u5ae9\\u5ae9\\u7684 \\u9019\\u500b \\u6536\\u7d0d \\u7d44\\u5408 \\u63a8\\u85a6 \\u56e0\\u70ba \\u7db2\\u683c \\u6536\\u7d0d \\u62c9\\u934a \\u9084\\u6709 \\u5851\\u81a0 \\u800c\\u4e14 \\u984f\\u8272 \\u8a0e\\u559c \\u9084\\u6709 \\u5206\\u985e \\u5b57\\u6a23 \\u627e\\u8d77 \\u6771\\u897f \\u7c21\\u55ae \\u800c\\u4e14 \\u8a2d\\u8a08 \\u53ef\\u611b \\u9019\\u7d44 \\u6536\\u7d0d\\u888b \\u5e73\\u5e38 \\u4e5f\\u53ef\\u4ee5 \\u9019\\u6b21 \\u9577\\u7058\\u5cf6 \\u6bd4\\u57fa\\u5c3c \\u8863\\u7269 \\u5916\\u5957 \\u9632\\u66ec \\u4fdd\\u990a\\u54c1 \\u5f69\\u599d \\u76e5\\u6d17 \\u96fb\\u68d2 \\u76f8\\u6a5f \\u5468\\u908a \\u5145\\u96fb\\u5668 \\u96fb\\u6c60 \\u7b49\\u7b49 \\u8b8a\\u58d3\\u5668 \\u62cd\\u7acb\\u5f97 \\u7b46\\u96fb \\u5468\\u908a \\u9632\\u6c34\\u888b \\u8a18\\u5f97 \\u8981\\u5e36 \\u6c92\\u6536 \\u539f\\u56e0 \\u6e05\\u695a \\u56e0\\u70ba \\u6a5f\\u5834 \\u6a19\\u793a \\u7981\\u6b62 \\u5e36\\u5098 \\u674e\\u9650\\u91cd \\u4e0d\\u904e \\u56e0\\u70ba \\u4ea4\\u901a\\u5de5\\u5177 \\u6703\\u9650 \\u91cd\\u884c \\u674e\\u88e1 \\u6240\\u4ee5 \\u5efa\\u8b70 \\u4e00\\u500b\\u4eba \\u63a7\\u5236 \\u5378\\u599d\\u6cb9 \\u74f6\\u88dd \\u5982\\u679c \\u7051\\u51fa \\u4ee5\\u7528 \\u5851\\u81a0 \\u6536\\u7d0d\\u888b \\u88dd\\u8d77\\u4f86 \\u6d41\\u51fa\\u4f86 \\u4e0d\\u6015 \\u5f04\\u9ad2 \\u5176\\u4ed6\\u7684 \\u6771\\u897f \\u7db2\\u683c \\u5f88\\u65b9 \\u4e00\\u76ee\\u77ad\\u7136 \\u7a0d\\u5fae \\u5206\\u4eab \\u4e00\\u4e0b \\u5e36\\u7684 \\u6771\\u897f \\u6e05\\u6f54 \\u4fdd\\u990a \\u8c9d\\u5fb7\\u746a \\u8212\\u598d \\u871c\\u59ae \\u773c\\u5507\\u5378\\u599d\\u6db2 AVIVA \\u73a9\\u7f8e\\u6de8 \\u984f\\u5e55 \\u7d72\\u82b1 AVIVA \\u5b8c\\u7f8e\\u591a\\u5143 \\u7cbe\\u83ef\\u6db2 LAMUCA \\u81a0\\u539f\\u86cb\\u767d \\u4fdd\\u6fd5 \\u4e73\\u6db2 \\u74f6\\u88dd \\u65b9\\u4fbf \\u65c5\\u884c \\u651c\\u5e36 \\u56e0\\u70ba \\u9577\\u7058\\u5cf6 \\u71b1\\u5e36 \\u570b\\u5bb6 \\u6240\\u4ee5 \\u9078\\u590f\\u5929 \\u4fdd\\u990a\\u54c1 \\u539f\\u672c\\u7528 \\u4e73\\u971c \\u9577\\u7058\\u5cf6 \\u4e73\\u6db2 \\u5f88\\u5920 \\u56e0\\u70ba \\u53ef\\u80fd\\u6703 \\u5929\\u5929 \\u66ec\\u592a\\u967d \\u6240\\u4ee5 \\u5e36\\u4e86 AVIVA \\u751f\\u7269\\u7e96\\u7dad\\u9762\\u819c \\u9019\\u500b \\u4fdd\\u6fd5 \\u5b8c\\u81c9 \\u8d85\\u4eae \\u8b8a\\u8d85 \\u5f48\\u6027 \\u8d85\\u50cf \\u82b1\\u679d xddd \\u5343\\u842c \\u8981\\u5e36 \\u6c92\\u7528 \\u904e\\u7684 \\u8a66\\u7528 \\u4e4b\\u524d \\u770b\\u904e \\u76f8\\u95dc \\u6587\\u7ae0 \\u56e0\\u70ba \\u5982\\u679c \\u570b\\u5916 \\u4e86\\u537b \\u904e\\u654f \\u9ebb\\u7169 \\u7528\\u54c1 \\u6b62\\u6c57 \\u5674\\u9727 \\u96c5\\u6f3e \\u4fdd\\u6fd5\\u5674\\u9727 \\u4fdd\\u6fd5 \\u93ae\\u5b9a \\u90fd\\u53ef\\u4ee5 \\u535a\\u58eb \\u96b1\\u5f62\\u773c\\u93e1 \\u6e05\\u6f54 Fruit earth \\u8606\\u8588\\u81a0 \\u66ec\\u50b7 \\u9019\\u500b \\u4e00\\u4e0b \\u7d05\\u4e86 \\u9ed1\\u4eba\\u4eae \\u7259\\u818f \\u8a18\\u5f97 \\u6e96\\u5099 \\u74f6\\u88dd \\u65b9\\u4fbf \\u651c\\u5e36 \\u7259\\u818f \\u56e0\\u70ba\\u6709 \\u722c\\u6587 \\u7db2\\u53cb \\u5206\\u4eab \\u9577\\u7058\\u5cf6 \\u98ef\\u5e97 \\u6c92\\u6709 \\u63d0\\u4f9b \\u7259\\u818f \\u56e0\\u70ba \\u6234\\u7259\\u5957 \\u95dc\\u897f \\u7259\\u818f \\u91cd\\u8981 \\u6240\\u4ee5 \\u9084\\u662f \\u5e36\\u4e86 dior \\u5316\\u599d\\u5305 \\u8d85\\u5927 \\u63a8\\u85a6 \\u5f69\\u599d \\u901a\\u901a \\u9032\\u53bb \\u9084\\u6709 \\u7a7a\\u9593 \\u5e95\\u599d \\u9632\\u66ec \\u90e8\\u4efd \\u56e0\\u70ba \\u9577\\u7058\\u5cf6 \\u592a\\u967d \\u975e\\u5e38 \\u53ef\\u6015 \\u8d85\\u6015 \\u66ec\\u9ed1 \\u8b8a\\u767d \\u7d2f\\u554a \\u6240\\u4ee5 \\u7e3d\\u5171 \\u5e36\\u4e86 \\u9632\\u66ec \\u9632\\u66ec \\u51fa\\u767c \\u6700\\u5f8c \\u9078\\u64c7 \\u81c9\\u7528 cure care \\u8eab\\u9ad4 Fasio \\u91d1\\u74f6 \\u5c0f\\u7787 \\u56e0\\u70ba \\u8a0e\\u53ad \\u9632\\u66ec \\u6240\\u4ee5 \\u5e6b\\u5c0f\\u7787 \\u5e36\\u4e86 \\u871c\\u59ae \\u9632\\u66ec \\u4fdd\\u6fd5 \\u6c34\\u51dd\\u971c \\u8eab\\u9ad4 \\u4e0d\\u7406 xddd \\u7e3d\\u5171 \\u5e36\\u4e86 Fasio \\u91d1\\u74f6 SPF50 PA+++ city veil SPF50 PA+++ cure care SPF40 PA+++ \\u689d\\u871c\\u59ae \\u542b\\u6c34 \\u9632\\u66ec \\u4fdd\\u6fd5 \\u6c34\\u51dd\\u971c SPF50 PA+++ city veil Fasio \\u5e36\\u8457 \\u5099\\u7528 \\u5f8c\\u4f86 \\u767c\\u73fe \\u6574\\u500b \\u591a\\u616e Fasio \\u6574\\u500b \\u5920\\u7528 \\u6211\\u7528 \\u4e00\\u5b9a \\u63a8\\u4e00\\u4e0b Fasio \\u91d1\\u74f6 \\u8a0e\\u53ad \\u8eab\\u9ad4 \\u9632\\u66ec \\u6cdb\\u767d \\u4e7e\\u6f80 \\u54ac\\u624b \\u56e0\\u70ba \\u9019\\u6a23 \\u88dc\\u64e6 \\u5f88\\u96e3 \\u800c\\u4e14 \\u88dc\\u8d8a \\u8212\\u670d \\u5f88\\u96e3 \\u7d9c\\u5408 \\u5404\\u7a2e \\u5fc3\\u5f97 \\u4e4b\\u5f8c \\u6c7a\\u5b9a \\u9019\\u74f6 \\u5b9c\\u4e4b\\u5916 \\u9632\\u66ec \\u8d85\\u5f37 \\u66ec\\u50b7 \\u4e5f\\u6c92\\u6709 \\u66ec\\u9ed1 \\u6e05\\u6f54 \\u65b9\\u9762 \\u5e36\\u4e86 \\u8d77\\u6ce1 \\u6240\\u4ee5 \\u8d77\\u6ce1 \\u7a0d\\u5fae \\u5237\\u904e \\u8eab\\u9ad4 \\u4e4b\\u5f8c \\u4e7e\\u6de8 \\u9019\\u74f6 \\u4e0d\\u6703 \\u9ecf\\u81a9 \\u5927\\u7d04 \\u5206\\u9418 \\u4e0d\\u6703 \\u54ac\\u624b \\u4e5f\\u4e0d\\u6703 \\u4e7e\\u6f80 \\u9632\\u6c34\\u9632\\u66ec \\u4f86\\u8aaa \\u9019\\u74f6 \\u5f88\\u512a cure care \\u9019\\u74f6 \\u8d85\\u597d \\u6211\\u55ae \\u73a9\\u6c34 \\u5403\\u98ef \\u62cd\\u7167 \\u53ea\\u88dc \\u7c89\\u9905 \\u56e0\\u70ba \\u5e95\\u599d \\u592a\\u71b1 \\u812b\\u599d \\u88dc\\u599d \\u9ebb\\u7169 \\u7c89\\u9905 \\u5df4\\u9ece\\u840a\\u96c5 \\u4e09\\u8272 \\u5149\\u8b5c \\u7f8e\\u767d \\u7c89\\u9905 \\u9019\\u74f6 \\u53ef\\u4ee5 \\u4e00\\u4e0b \\u7db2\\u8def \\u5fc3\\u5f97 \\u597d\\u7528 \\u773c\\u599d \\u90e8\\u4efd miss hana \\u82b1\\u5a1c\\u5c0f\\u59d0 \\u773c\\u7dda\\u81a0\\u7b46 kiss \\u6fc3\\u5bc6 \\u776b\\u6bdb\\u818f \\u6200\\u611b\\u9b54\\u93e1 \\u5927\\u5730\\u8272\\u773c\\u5f71 integrate \\u7709\\u7c89 putti \\u5047\\u776b\\u6bdb\\u81a0 \\u5927\\u5275 \\u7709\\u6bdb\\u96e8\\u8863 \\u773c\\u7dda \\u4e5f\\u53ef\\u4ee5 \\u5927\\u5730\\u8272 \\u4e00\\u76e4 \\u641e\\u5b9a \\u773c\\u599d \\u5927\\u5275 \\u9019\\u74f6 \\u96e8\\u8863 \\u63a8\\u85a6 \\u5b9c\\u800c\\u4e14 \\u8d85\\u5f37 \\u7709\\u6bdb \\u53ef\\u4ee5 \\u4e5f\\u53ef\\u4ee5 \\u76f4\\u63a5 \\u758a\\u5728 \\u773c\\u7dda \\u5047\\u776b\\u6bdb \\u4e0b\\u96e8 \\u73a9\\u6c34 \\u4e0d\\u6015 \\u773c\\u7dda \\u5047\\u776b\\u6bdb \\u6703\\u6389 \\u5de5\\u5177 \\u776b\\u6bdb\\u593e \\u96d9\\u773c\\u76ae\\u8cbc \\u526a\\u5200 \\u593e\\u5b50 \\u5047\\u776b\\u6bdb \\u53e6\\u5916 \\u5de6\\u908a \\u5c0f\\u74f6 Malone \\u8a66\\u7ba1 \\u9999\\u6c34 \\u56e0\\u70ba \\u5c0f\\u74f6 \\u6240\\u4ee5 \\u651c\\u5e36 \\u5f88\\u65b9 \\u81f3\\u5c11 \\u6703\\u5fc3 \\u5047\\u776b\\u6bdb \\u8a18\\u5f97 \\u597d\\u5f8c\\u6536 \\u5047\\u776b\\u6bdb \\u9019\\u6b21 AK609 \\u6211\\u8d85 \\u611b\\u7684 \\u7b26\\u5408 \\u773c\\u578b \\u6e05\\u6f54 \\u93e1\\u982d \\u597d\\u5e6b\\u624b \\u6e05\\u6f54 \\u9084\\u6709 \\u597d\\u7528 \\u751f\\u7406\\u98df\\u9e7d\\u6c34 \\u96a8\\u8eab \\u5316\\u599d\\u5305 \\u751f\\u7406\\u98df\\u9e7d\\u6c34 \\u773c\\u7dda\\u6db2\\u7b46 \\u5047\\u776b\\u6bdb\\u81a0 smith \\u8b77\\u5507\\u818f chanel \\u816e\\u7d05 \\u7259\\u7dda \\u7259\\u9593\\u5237 \\u9019\\u500b \\u8b77\\u5507\\u818f \\u83f2\\u857e \\u6211\\u8d85 \\u559c\\u6b61 \\u7528\\u8d77\\u4f86 \\u5507\\u8272 \\u6703\\u8b8a \\u6de1\\u6de1\\u7684 \\u81ea\\u7136 \\u90a3\\u7a2e \\u7c89\\u5ae9 chanal \\u816e\\u7d05 \\u5247\\u662f \\u6a5f\\u5834 \\u8cb7\\u7684 \\u525b\\u597d \\u93e1\\u5b50 \\u96a8\\u8eab \\u5e36\\u8457 \\u559c\\u6b61 \\u9019\\u500b \\u816e\\u7d05 \\u80fd\\u8aaa \\u8d85\\u7d1a \\u7121\\u6575 \\u7d50\\u679c \\u56de\\u570b \\u5e7e\\u5929 \\u8cb7\\u4e86 \\u7c89\\u9905 \\u6539\\u5929 \\u767c\\u4e00\\u7bc7\\u958b \\u5316\\u599d\\u5305 dior \\u76ae\\u8cea \\u83f1\\u683c\\u7d0b \\u5bb9\\u91cf \\u6eff\\u5927\\u7684 \\u7d50\\u679c \\u6574\\u7406 \\u5b8c\\u884c \\u674e\\u5c0f\\u7787 \\u9019\\u4e00 \\u5927\\u7bb1 \\u4e00\\u9ede \\u6e21\\u5047 \\u6771\\u897f \\u600e\\u9ebc\\u6703 xdddHello \\u5feb\\u4f86 \\u6309\\u8b9a \\u52a0\\u5165 Facebook \\u7c89\\u7d72 \\u90fd\\u6703 \\u7c89\\u7d72 \\u5718\\u8ddf \\u4f60\\u5011 \\u5206\\u4eab \\u751f\\u6d3b \\u5927\\u5c0f\\u4e8b \\u4e00\\u5b9a \\u9019\\u88e1 \\u5718\\u8cfc \\u5b9a\\u6642 \\u51fa\\u6c92 \\u767c\\u6587 \\u9810\\u544a \\u9592\\u804a \\u7463\\u4e8b \\u5c0f\\u79ae\\u7269 \\u62bd\\u734e \\u540d\\u55ae \\u516c\\u5e03 \\u9019\\u88e1 Click \\u8a18\\u5f97 \\u6587\\u7ae0 \\u6309\\u8b9a \\u8b1d\\u8b1d '"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f.first()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Build Word2Vec"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os\n",
"from gensim import corpora, models \n",
"class MySentences(object):\n",
" def __init__(self, dirname):\n",
" self.dirname = dirname\n",
" def __iter__(self):\n",
" for fname in os.listdir(self.dirname):\n",
" for line in open(os.path.join(self.dirname, fname)):\n",
" yield line.split()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"對於 打包 這種事 覺得 很多人 喜歡 出國 討厭 打包 不過 完全 相反 超愛 打包行李 xddd 打包行李 最重 收納 如果 東西 通通 塞進去 行李箱 絕對 爆炸 出國 有時候 需要 行李箱 打開 檢查 如果 打開 內衣 噴出來 尷尬 建議 大家 以用 一些 塑膠袋 收納袋 分裝 理起來 方便 找起來 比較 方便 外面 打開 行李箱 不用 擔心 行李 這次 一個 行李箱 行李箱 很購 推薦 這個 小鋪 網格 收納 組合 顏色 可愛 嫩嫩的 這個 收納 組合 推薦 因為 網格 收納 拉鍊 還有 塑膠 而且 顏色 討喜 還有 分類 字樣 找起 東西 簡單 而且 設計 可愛 這組 收納袋 平常 也可以 這次 長灘島 比基尼 衣物 外套 防曬 保養品 彩妝 盥洗 電棒 相機 周邊 充電器 電池 等等 變壓器 拍立得 筆電 周邊 防水袋 記得 要帶 沒收 原因 清楚 因為 機場 標示 禁止 帶傘 李限重 不過 因為 交通工具 會限 重行 李裡 所以 建議 一個人 控制 卸妝油 瓶裝 如果 灑出 以用 塑膠 收納袋 裝起來 流出來 不怕 弄髒 其他的 東西 網格 很方 一目瞭然 稍微 分享 一下 帶的 東西 清潔 保養 貝德瑪 舒妍 蜜妮 眼唇卸妝液 AVIVA 玩美淨 顏幕 絲花 AVIVA 完美多元 精華液 LAMUCA 膠原蛋白 保濕 乳液 瓶裝 方便 旅行 攜帶 因為 長灘島 熱帶 國家 所以 選夏天 保養品 原本用 乳霜 長灘島 乳液 很夠 因為 可能會 天天 曬太陽 所以 帶了 AVIVA 生物纖維面膜 這個 保濕 完臉 超亮 變超 彈性 超像 花枝 xddd 千萬 要帶 沒用 過的 試用 之前 看過 相關 文章 因為 如果 國外 了卻 過敏 麻煩 用品 止汗 噴霧 雅漾 保濕噴霧 保濕 鎮定 都可以 博士 隱形眼鏡 清潔 Fruit earth 蘆薈膠 曬傷 這個 一下 紅了 黑人亮 牙膏 記得 準備 瓶裝 方便 攜帶 牙膏 因為有 爬文 網友 分享 長灘島 飯店 沒有 提供 牙膏 因為 戴牙套 關西 牙膏 重要 所以 還是 帶了 dior 化妝包 超大 推薦 彩妝 通通 進去 還有 空間 底妝 防曬 部份 因為 長灘島 太陽 非常 可怕 超怕 曬黑 變白 累啊 所以 總共 帶了 防曬 防曬 出發 最後 選擇 臉用 cure care 身體 Fasio 金瓶 小瞇 因為 討厭 防曬 所以 幫小瞇 帶了 蜜妮 防曬 保濕 水凝霜 身體 不理 xddd 總共 帶了 Fasio 金瓶 SPF50 PA+++ city veil SPF50 PA+++ cure care SPF40 PA+++ 條蜜妮 含水 防曬 保濕 水凝霜 SPF50 PA+++ city veil Fasio 帶著 備用 後來 發現 整個 多慮 Fasio 整個 夠用 我用 一定 推一下 Fasio 金瓶 討厭 身體 防曬 泛白 乾澀 咬手 因為 這樣 補擦 很難 而且 補越 舒服 很難 綜合 各種 心得 之後 決定 這瓶 宜之外 防曬 超強 曬傷 也沒有 曬黑 清潔 方面 帶了 起泡 所以 起泡 稍微 刷過 身體 之後 乾淨 這瓶 不會 黏膩 大約 分鐘 不會 咬手 也不會 乾澀 防水防曬 來說 這瓶 很優 cure care 這瓶 超好 我單 玩水 吃飯 拍照 只補 粉餅 因為 底妝 太熱 脫妝 補妝 麻煩 粉餅 巴黎萊雅 三色 光譜 美白 粉餅 這瓶 可以 一下 網路 心得 好用 眼妝 部份 miss hana 花娜小姐 眼線膠筆 kiss 濃密 睫毛膏 戀愛魔鏡 大地色眼影 integrate 眉粉 putti 假睫毛膠 大創 眉毛雨衣 眼線 也可以 大地色 一盤 搞定 眼妝 大創 這瓶 雨衣 推薦 宜而且 超強 眉毛 可以 也可以 直接 疊在 眼線 假睫毛 下雨 玩水 不怕 眼線 假睫毛 會掉 工具 睫毛夾 雙眼皮貼 剪刀 夾子 假睫毛 另外 左邊 小瓶 Malone 試管 香水 因為 小瓶 所以 攜帶 很方 至少 會心 假睫毛 記得 好後收 假睫毛 這次 AK609 我超 愛的 符合 眼型 清潔 鏡頭 好幫手 清潔 還有 好用 生理食鹽水 隨身 化妝包 生理食鹽水 眼線液筆 假睫毛膠 smith 護唇膏 chanel 腮紅 牙線 牙間刷 這個 護唇膏 菲蕾 我超 喜歡 用起來 唇色 會變 淡淡的 自然 那種 粉嫩 chanal 腮紅 則是 機場 買的 剛好 鏡子 隨身 帶著 喜歡 這個 腮紅 能說 超級 無敵 結果 回國 幾天 買了 粉餅 改天 發一篇開 化妝包 dior 皮質 菱格紋 容量 滿大的 結果 整理 完行 李小瞇 這一 大箱 一點 渡假 東西 怎麼會 xdddHello 快來 按讚 加入 Facebook 粉絲 都會 粉絲 團跟 你們 分享 生活 大小事 一定 這裡 團購 定時 出沒 發文 預告 閒聊 瑣事 小禮物 抽獎 名單 公布 這裡 Click 記得 文章 按讚 謝謝\n"
]
}
],
"source": [
"ms = MySentences(\"../data/2015_half/positvie/word2vec/terms/\")\n",
"for i in ms:\n",
" for term in i :\n",
" print term,\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Build Word2Vec\n",
"model = models.Word2Vec(ms,size=100, window=5, min_count=5, workers=8)\n",
"model.save(\"../data/2015_half/word2vec.model\")"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"座間味\n",
"琉球\n",
"壺屋通\n",
"那霸\n",
"暖暮拉麵\n",
"系滿\n",
"波上宮\n",
"石垣島旅遊\n",
"榮町市場\n",
"花笠食堂\n",
"古宇利\n",
"琉球茶房\n",
"沖繩麵\n",
"國際通\n",
"美之海\n",
"琉球村\n",
"中城城\n",
"沖繩那霸\n",
"国際通\n",
"知念\n",
"慶良間\n",
"首里城\n",
"岸本食堂\n",
"大根之花\n",
"通堂拉麵\n",
"那霸市\n",
"車如\n",
"座間味島\n",
"玉泉洞\n",
"服初\n",
"沖繩自助\n",
"日本食玩\n",
"沖繩租車\n",
"真壁\n",
"古宇利大橋\n",
"電軌\n",
"波間\n",
"萬座毛\n",
"貓島\n",
"泡瀨漁港\n",
"北谷町\n",
"牧志市場\n",
"北谷\n",
"海中道路\n",
"琉球茶坊\n",
"沖縄\n",
"小祿\n",
"小祿店\n",
"何坐\n",
"縣中頭\n",
"石垣島必買\n",
"永旺夢樂城\n",
"那霸機場\n",
"古宇利島\n",
"新原海灘\n",
"沖繩自由行\n",
"阿古\n",
"美濱\n",
"沖繩跟團\n",
"百年古家\n",
"花人逢\n",
"沖繩旅遊\n",
"奧武島\n",
"食札\n",
"石垣島\n",
"石垣島租車\n",
"名護\n",
"港川\n",
"円店\n",
"沖繩必去\n",
"恩納\n",
"首里\n",
"万座\n",
"座喜味城跡\n",
"海人食堂\n",
"豐崎\n",
"牧志\n",
"石垣\n",
"新都心\n",
"城跡\n",
"素泊宿\n",
"凱旋歸來\n",
"沖繩南部\n",
"松尾\n"
]
}
],
"source": [
"\n",
"def checkword(x):\n",
" return all(u'\\u4e00' <= c <= u'\\u9fff' for c in x)\n",
"\n",
"slist = model.most_similar(positive=['沖繩'],topn=100)\n",
"for word , score in slist :\n",
" if checkword(word.decode('utf-8')):\n",
" print word "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Build Doc2Vec"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from gensim.models.doc2vec import LabeledSentence\n",
"class LabeledLineSentence(object):\n",
" def __init__(self, dirname):\n",
" self.dirname = dirname\n",
" def __iter__(self):\n",
" for fname in os.listdir(self.dirname):\n",
" for uid, line in enumerate(open(os.path.join(self.dirname, fname))):\n",
" yield LabeledSentence(words=line.split(), tags =['SENT_%s' % uid])\n",
" \n",
"sentences = LabeledLineSentence(\"../data/2015_half/positvie/word2vec/terms/\")\n",
"docm = models.Doc2Vec(alpha=0.025, min_alpha=0.025,workers=8) \n",
"docm.build_vocab(sentences)\n",
"for epoch in range(10):\n",
" print '*',\n",
" docm.train(sentences)\n",
" docm.alpha -= 0.002 # decrease the learning rate\n",
" docm.min_alpha = docm.alpha # fix the learning rate, no decay\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"docm.save(\"../data/2015_half/doc2vec.model\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"300\n"
]
},
{
"data": {
"text/plain": [
"[('\\xe5\\xa4\\xa7\\xe9\\xba\\xbb\\xe6\\x9d\\x91', 0.310971736907959),\n",
" ('\\xe7\\xb6\\xa0\\xe6\\xb4\\x8b\\xe5\\xb0\\x96', 0.28012874722480774),\n",
" ('\\xe9\\x81\\xa0\\xe7\\x87\\x88', 0.27422788739204407),\n",
" ('\\xe5\\xb8\\xb8\\xe9\\xa3\\x9b', 0.26963648200035095),\n",
" ('\\xe7\\x8e\\xa9\\xe5\\x83\\x8f', 0.2652081549167633),\n",
" ('\\xe5\\xbf\\xab\\xe8\\xb2\\xbc', 0.2630038857460022),\n",
" ('\\xe8\\xbc\\xaa\\xe6\\x95\\xb8', 0.2617891728878021),\n",
" ('Bandol', 0.2595551609992981),\n",
" ('\\xe9\\x9e\\x8d\\xe6\\xba\\xaa', 0.259304016828537),\n",
" ('Aragosta', 0.2587328553199768)]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"for i in range(1,99):\n",
" docvec = docm.docvecs[i] \n",
" print len(docvec)\n",
" break\n",
"for i in docm.vocab.keys():\n",
" v = docm.vocab[i]\n",
" break\n",
"\n",
"docm.most_similar(\"kent\")\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment