├── experiment_record
└── sql
│ ├── db_sentiment_corpus_3.sql
│ ├── db_sentiment_corpus_2.sql
│ └── sql01
├── utils
├── __init__.py
├── file_utils.py
├── string_utils.py
├── calculate_utils.py
├── mysql_utils.py
├── time_utils.py
├── ml_utils.py
└── text_utils.py
├── data
├── config.properties
└── dict
│ └── stopwords.txt
├── .idea
├── encodings.xml
├── vcs.xml
├── modules.xml
├── misc.xml
└── sentimentanalysis.iml
├── models
├── __init__.py
├── simple_nn.py
├── lstm_cnn.py
├── fasttext.py
├── lstm_cnn_2.py
├── lstm.py
└── cnn.py
├── LICENSE
├── logging.conf
├── exp.sh
├── README.md
├── data_process.py
├── funcs_test.py
├── sentiment_classify.py
└── tools
└── nlp_tools.py
/experiment_record/sql/db_sentiment_corpus_3.sql:
--------------------------------------------------------------------------------
1 | select * from sentiment_label_no_aspect_train
--------------------------------------------------------------------------------
/experiment_record/sql/db_sentiment_corpus_2.sql:
--------------------------------------------------------------------------------
1 | select * from sentiment_label_no_aspect_validate
--------------------------------------------------------------------------------
/utils/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # 遍历文件夹,时间日期处理,其他文本处理,batch处理,标签处理, split语料, build voca, roc, matrix,
4 |
--------------------------------------------------------------------------------
/data/config.properties:
--------------------------------------------------------------------------------
1 | [db_sentiment_corpus]
2 | DATABASE_HOST =
3 | DATABASE_USERNAME =
4 | DATABASE_PASSWORD =
5 | DATABASE_NAME =
6 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/utils/file_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import os
4 |
5 |
6 | def get_file_info(file_full_name):
7 | """
8 | 返回文件的所在路径,文件名称,文件后缀
9 | :param filename:
10 | :return:
11 | """
12 | (file_path, temp_filename) = os.path.split(file_full_name)
13 | (file_name, extension) = os.path.splitext(temp_filename)
14 | return file_path, file_name, extension
15 |
--------------------------------------------------------------------------------
/models/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from models.cnn import *
4 | from models.simple_nn import *
5 | from models.lstm import *
6 | from models.lstm_cnn import *
7 | from models.fasttext import *
8 | from models.lstm_cnn_2 import *
9 |
10 | __all__ = ['CNN_2_Layers', 'SimpleNN', 'SimpleLSTM', 'BiLSTM',
11 | 'CNN_1_layers', 'CNN_LSTM', 'StackedLSTM', 'FastText', 'GRU','CNN_LSTM_2','LSTM_CNN_2']
12 |
--------------------------------------------------------------------------------
/.idea/sentimentanalysis.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/models/simple_nn.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from tensorflow import keras
4 | import tensorflow as tf
5 | from utils.ml_utils import MLModel
6 |
7 |
8 | class SimpleNN(MLModel):
9 | """one hidden layer for sentimental analysis. 来自google的tutorial"""
10 |
11 | def __init__(self, hid_dim, class_dim, **kwgs):
12 | """Initialize simple NN model.
13 | """
14 | super(SimpleNN, self).__init__(**kwgs)
15 | model = keras.Sequential()
16 |
17 | model.add(self.emb_layer)
18 | model.add(keras.layers.GlobalAveragePooling1D())
19 | model.add(keras.layers.Dense(hid_dim, activation=tf.nn.relu))
20 | model.add(keras.layers.Dense(class_dim, activation=tf.nn.softmax))
21 |
22 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
23 | optimizer="adam", # "adam" rmsprop
24 | metrics=["accuracy"])
25 |
26 | self.model = model
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 faker2cumtb
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/utils/string_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | 一些字符串处理的方法
4 | """
5 |
6 | import re
7 |
8 | def string_is_float(str_float):
9 | """
10 | 判断一个字符串是否是浮点数的字符串,整型也不是浮点数
11 | :param str_float:
12 | :return:
13 | """
14 |
15 | is_float = True
16 | try:
17 | int(str_float)
18 | is_float = False
19 | except ValueError:
20 | try:
21 | float(str_float)
22 | except ValueError:
23 | is_float = False
24 |
25 | return is_float
26 |
27 |
28 | def format_weibo(weibo): # , after_segment=False):
29 | """
30 | 对于话题进行格式化,统一成一样含义的话题
31 | :param weibo:
32 | # :param after_segment: 是否分词之后的微博
33 | :return:
34 | """
35 | # 微博话题还原
36 | # if after_segment:
37 | # pattern = re.compile('#[^#]+#')
38 | # new_weibo = re.sub(pattern, lambda x: x.group(0).replace(' ', ''), weibo)
39 | # else:
40 |
41 | # topic 去掉表情符号
42 | pattern = re.compile('(\[[^\[\]]{1,10}\])+')
43 | new_weibo = re.sub(pattern, '', weibo)
44 | new_weibo = " ".join(new_weibo.strip().upper().split())
45 |
46 | return new_weibo
47 |
48 |
49 | if __name__ == '__main__':
50 | digits = '12'
51 |
52 | print(string_is_float(digits))
--------------------------------------------------------------------------------
/models/lstm_cnn.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from tensorflow import keras
4 | from utils.ml_utils import MLModel
5 |
6 | # Convolution parameters
7 | kernel_size = 5
8 | pool_size = 4
9 |
10 |
11 | class CNN_LSTM(MLModel):
12 | """先CNN 然后 LSTM 的组合 """
13 |
14 | def __init__(self, hid_dim, dropout_rate, class_dim, **kwargs):
15 | """Initialize CNN_LSTM model.
16 | """
17 | super(CNN_LSTM, self).__init__(**kwargs)
18 | model = keras.Sequential()
19 |
20 | model.add(self.emb_layer)
21 | model.add(keras.layers.Dropout(dropout_rate))
22 | model.add(keras.layers.Conv1D(hid_dim,
23 | kernel_size,
24 | padding='valid',
25 | activation='relu',
26 | strides=1))
27 | model.add(keras.layers.MaxPooling1D(pool_size=pool_size))
28 |
29 | # 默认 CNN的filters和LSTM的输出节点数相同
30 | model.add(keras.layers.LSTM(hid_dim))
31 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
32 |
33 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
34 | optimizer="adam", # "adam" rmsprop
35 | metrics=["accuracy"])
36 |
37 | self.model = model
38 |
--------------------------------------------------------------------------------
/logging.conf:
--------------------------------------------------------------------------------
1 | [formatters]
2 | keys=default, data, page
3 |
4 | [formatter_default]
5 | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
6 | class=logging.Formatter
7 |
8 | [formatter_data]
9 | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
10 | class=logging.Formatter
11 |
12 | [formatter_page]
13 | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
14 | class=logging.Formatter
15 |
16 | [handlers]
17 | keys=console, default_file, page_file, data_file
18 |
19 | [handler_console]
20 | class=logging.StreamHandler
21 | formatter=default
22 | args=tuple()
23 |
24 | [handler_default_file]
25 | class=logging.FileHandler
26 | level=INFO
27 | formatter=default
28 | args=("logs/logger.log", "a")
29 |
30 | [handler_data_file]
31 | class=logging.FileHandler
32 | level=INFO
33 | formatter=data
34 | args=("logs/hot_search.log", "a")
35 |
36 | [handler_page_file]
37 | class=logging.FileHandler
38 | level=INFO
39 | formatter=page
40 | args=("logs/mysqldb.log", "a")
41 |
42 | [loggers]
43 | keys=root, data, page
44 |
45 | [logger_root]
46 | level=INFO
47 | handlers=console,default_file
48 | qualname=root
49 |
50 | [logger_data]
51 | level=DEBUG
52 | handlers=console,data_file
53 | qualname=hot_search
54 | propagate=0
55 |
56 | [logger_page]
57 | level=DEBUG
58 | handlers=console,page_file
59 | qualname=mysqldb
60 | propagate=0
61 |
--------------------------------------------------------------------------------
/exp.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | #python sentiment_classify.py --model_path models/save/test.h5 --mode train --sql_file_path experiment_record/sql/db_sentiment_corpus_3.sql --epochs 20 --model_type cnn_lstm -g train_in_layer
4 |
5 | #python sentiment_classify.py --model_path models/save/cnn_lstm_all_corpus_2_v1.h5 --mode train --sql_file_path experiment_record/sql/db_sentiment_corpus_2.sql --epochs 20 --model_type cnn_lstm -g train_in_layer --sql_file_path_eval_when_train experiment_record/sql/db_sentiment_corpus_3.sql
6 |
7 | models=('cnn_1_layer' 'cnn_2_layers' 'simple_nn' 'simple_lstm' 'bi_lstm' 'cnn_lstm' 'stacked_lstm' 'fasttext')
8 | for model in ${models[@]};do
9 | model_name="$model"_all_corpus_2_v3
10 | echo $model_name
11 |
12 |
13 | #python sentiment_classify.py --model_path models/save/$model_name.h5 --mode train --sql_file_path experiment_record/sql/db_sentiment_corpus_2.sql --epochs 20 --model_type cnn_lstm -g train_in_layer --sql_file_path_eval_when_train experiment_record/sql/db_sentiment_corpus_3.sql
14 |
15 | python sentiment_classify.py --model_path models/save/$model_name.h5 --mode train --data_file_path data/db_sentiment_corpus_2.txt --epochs 20 --model_type bilstm -g train_in_layer --data_file_path_eval_when_train data/test/db_sentiment_corpus_3.txt
16 |
17 | python funcs_test.py eval $model_name > results/$model_name
18 |
19 |
20 |
21 | done
22 |
--------------------------------------------------------------------------------
/experiment_record/sql/sql01:
--------------------------------------------------------------------------------
1 | SELECT s1.label as label ,s1.sentence_now as text from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type = 2 and s2.entity_name not in ( '李诞' , '蒋劲夫' )
2 |
3 | SELECT case when s1.label > 2 then 1 else s1.label end as label , s1.sentence_now as text from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type =2
4 |
5 | (select * from (SELECT case when s1.label > 2 then 1 else s1.label end as label , s1.sentence_now as text from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type =2) a where a.label = 2 order by RAND() limit 0,9148) union all (select * from (SELECT case when s1.label > 2 then 1 else s1.label end as label , s1.sentence_now as text from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type =2)a where a.label = 0 order by RAND() limit 0,9148) union all (select 1 as label,a.text as text from (SELECT case when s1.label > 2 then 1 else s1.label end as label , s1.sentence_now as text from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type =2)a where a.label in (1,3) order by RAND() limit 0,9148)
--------------------------------------------------------------------------------
/utils/calculate_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import numpy as np
4 |
5 |
6 | def to_categorical(y, num_classes=None):
7 | """Converts a class vector (integers) to binary class matrix.
8 |
9 | E.g. for use with categorical_crossentropy.
10 |
11 | Arguments:
12 | y: class vector to be converted into a matrix
13 | (integers from 0 to num_classes).
14 | num_classes: total number of classes.
15 |
16 | Returns:
17 | A binary matrix representation of the input. The classes axis is placed
18 | last.
19 | """
20 | y = np.array(y, dtype='int')
21 | input_shape = y.shape
22 | if input_shape and input_shape[-1] == 1 and len(input_shape) > 1:
23 | input_shape = tuple(input_shape[:-1])
24 | y = y.ravel()
25 | if not num_classes:
26 | num_classes = np.max(y) + 1
27 | n = y.shape[0]
28 | categorical = np.zeros((n, num_classes), dtype=np.float32)
29 | categorical[np.arange(n), y] = 1
30 | output_shape = input_shape + (num_classes,)
31 | categorical = np.reshape(categorical, output_shape)
32 | return categorical
33 |
34 |
35 | def normalize(x, axis=-1, order=2):
36 | """Normalizes a Numpy array.
37 |
38 | Arguments:
39 | x: Numpy array to normalize.
40 | axis: axis along which to normalize.
41 | order: Normalization order (e.g. 2 for L2 norm).
42 |
43 | Returns:
44 | A normalized copy of the array.
45 | """
46 | l2 = np.atleast_1d(np.linalg.norm(x, order, axis))
47 | l2[l2 == 0] = 1
48 | return x / np.expand_dims(l2, axis)
49 |
--------------------------------------------------------------------------------
/models/fasttext.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from utils.ml_utils import MLModel
4 | from tensorflow import keras
5 |
6 | # Set parameters:
7 | # ngram_range = 2 will add bi-grams features
8 | # ngram_range = 1
9 | # max_features = 20000
10 | # maxlen = 400
11 | # batch_size = 32
12 | # embedding_dims = 50
13 | # epochs = 5
14 |
15 |
16 | class FastText(MLModel):
17 |
18 | def __init__(self, class_dim, **kwargs):
19 | """Initialize CNN_LSTM model.
20 | """
21 | super(FastText, self).__init__(**kwargs)
22 | model = keras.Sequential()
23 |
24 | model.add(self.emb_layer)
25 | # we start off with an efficient embedding layer which maps
26 | # our vocab indices into embedding_dims dimensions
27 | # model.add(Embedding(max_features,
28 | # embedding_dims,
29 | # input_length=maxlen))
30 |
31 | # we add a GlobalAveragePooling1D, which will average the embeddings
32 | # of all words in the document
33 | model.add(keras.layers.GlobalAveragePooling1D())
34 |
35 | # We project onto a single unit output layer, and squash it with a sigmoid:
36 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
37 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
38 | optimizer="adam", # "adam" rmsprop
39 | metrics=["accuracy"])
40 |
41 | self.model = model
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # sentimentanalysis
2 | 对微博评论进行情感三分类(正面,中性,负面)
3 |
4 | [](https://choosealicense.com/licenses/mit/)
5 | [](https://github.com/faker2cumtb/sentimentanalysis/pulls)
6 | [](https://github.com/faker2cumtb/sentimentanalysis/releases)
7 |
8 | ---
9 |
10 | ## 目录
11 |
12 | ```text
13 | data/ 存放训练语料测试语料
14 | cache/ 词向量
15 | dict/ 停用词表
16 | config.properties sql相关配置信息
17 | experiment_record/ 实验记录
18 | dict/ 语料词典
19 | model/ 保存的模型
20 | sql/ sql语句
21 | models/ 各种模型
22 | tools/ nlp相关工具
23 | utils/ 一些工具
24 | data_process.py 数据预处理
25 | funcs_test.py 功能测试
26 | sentiment_classify.py 训练和测试
27 |
28 | ```
29 |
30 | ---
31 | ## 模型介绍
32 | ### 1. lstm_cnn 模型
33 |
34 | 先用lstm提取文本特征,再对文本特征进行卷积池化,多种大小的卷积核进行拼接,接全连接层得出分类结果
35 |
36 | ### 2. cnn_lstm 模型
37 |
38 | 先用cnn卷积出N_gram特征,多种大小的卷积核进行拼接,再输入lstm,接全连接层得出分类结果
39 |
40 | ### 3. lstm模型
41 | 多层lstm模型
42 |
43 | ### 4. cnn模型
44 | 多卷积核大小拼接的cnn模型
45 | ## 主程序介绍
46 | python sentiment_classify.py
47 | 终端运行 sentiment_classify.py文件需要输入的参数
48 |
49 | | Parameter | Introduce | Demo |
50 | | ------ | ------ | ------ |
51 | |--model_path|模型路径|
52 | |--mode|模式|train|
53 | |--data_file_path|训练文件路径|
54 | |--epochs|迭代次数|55|
55 | |--model_type|模型名称|lstm_cnn|
56 | |--use_embedding|词向量生成方法|train_in_layer|
57 | |--vocabulary_size|限制词典大小|10000|
58 | |--sentence_length|限制句子长度|40|
59 | |--hidden_dim|隐层数|512|
60 | |--embedding_dim|词嵌入层数|300|
61 | |--batch_size|batch_size|512|
62 | |--dropout|dropout|0.5|
63 | |--lr|学习率|0.001|
64 | |--word_dict_path|词典路径|
65 |
66 | ## python及相关依赖包版本
67 | | Name | Version |
68 | | ------ | ------ |
69 | |python|3.6.7|
70 | |tensorflow|1.12.0|
71 | |jieba|0.39|
72 | |PyMySql|0.9.3|
73 | |gensim|3.7.0|
74 |
--------------------------------------------------------------------------------
/utils/mysql_utils.py:
--------------------------------------------------------------------------------
1 | import pymysql
2 | import logging
3 | import traceback
4 | import configparser
5 |
6 | logger = logging.getLogger('mysqldb')
7 |
8 |
9 | def get_mysql_conn(db_label):
10 | db = None
11 |
12 | try:
13 | cf = configparser.ConfigParser()
14 | cf.read('data/config.properties')
15 |
16 | # 打开数据库连接
17 | DATABASE_HOST = cf.get(db_label, 'DATABASE_HOST')
18 | DATABASE_USERNAME = cf.get(db_label, 'DATABASE_USERNAME')
19 | DATABASE_PASSWORD = cf.get(db_label, 'DATABASE_PASSWORD')
20 | DATABASE_NAME = cf.get(db_label, 'DATABASE_NAME')
21 |
22 | db = pymysql.connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME)
23 | except pymysql.err.OperationalError:
24 | logger.error('traceback.format_exc():\n%s' % traceback.format_exc())
25 |
26 | return db
27 |
28 |
29 | # 执行mysql的sql语句,默认是查询,默认
30 | # query : 是否是查询
31 | # use_fields : 则某一条记录是已经附加字段信息的字典格式的结果,否则是记录list加上字段描述的二元组
32 | # 注意字段名称一定要不同!!!
33 |
34 | # use_PK : 是否把第一高字段当作是主键,如是返回字典格式,key是主键,如该不是,则返回记录的list,必须use_fields为True才生效
35 |
36 |
37 | def execute_mysql_sql(db_label, sql, query=True, use_fields=True, use_PK=False):
38 | db = get_mysql_conn(db_label)
39 | if db:
40 | cursor = db.cursor()
41 | result = 1
42 | else:
43 | return 0
44 |
45 | try:
46 | # 执行SQL语句
47 | cursor.execute(sql)
48 |
49 | if query:
50 | result = cursor.fetchall()
51 | if use_fields:
52 | fields = cursor.description
53 |
54 | if use_PK:
55 | res_data = {}
56 | for row in result:
57 | one_data = {}
58 |
59 | for i in range(len(row)):
60 | one_data[fields[i][0]] = row[i]
61 |
62 | res_data[row[0]] = one_data
63 | else:
64 | res_data = []
65 | for row in result:
66 | one_data = {}
67 |
68 | for i in range(len(row)):
69 | one_data[fields[i][0]] = '' if row[i] == 'nan' else row[i]
70 |
71 | res_data.append(one_data)
72 |
73 | result = res_data
74 | else:
75 | result = (result, cursor.description)
76 |
77 | if not result: result = []
78 |
79 | else:
80 | # 提交到数据库执行
81 | db.commit()
82 |
83 | except Exception:
84 | logger.error(sql)
85 | logger.error('traceback.format_exc():\n%s' % traceback.format_exc())
86 | # 发生错误时回滚
87 | db.rollback()
88 |
89 | if query:
90 | result = []
91 | else:
92 | result = 0
93 |
94 | # 关闭数据库连接
95 | db.close()
96 | return result
97 |
--------------------------------------------------------------------------------
/utils/time_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # 格式为 "%Y-%m-%d %H:%M:%S", 如'2018-10-01 00:00:01'
4 | #
5 | # 常用函数
6 | # (1) 时间戳转为struct_time对象
7 | # time.localtime(ts))
8 | # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=12,
9 | # tm_wday=3, tm_yday=1, tm_isdst=0)
10 | # (2)
11 | # date_obj = datetime.date(int(start_date[0:4]), int(start_date[5:7]), int(start_date[8:10]))
12 | # end_date = (date_obj + datetime.timedelta(days=2)).strftime("%Y-%m-%d")
13 | # (3) 某一天开始的时间戳
14 | # tu.string_to_timestamp('%d-%02d-%02d 00:00:00' % (year, month, day))
15 |
16 | import time
17 | import datetime
18 |
19 | def datetime_to_string(dt):
20 | """
21 | # 把datetime转成字符串
22 | :param dt:
23 | :return:
24 | """
25 | return dt.strftime("%Y-%m-%d %H:%M:%S")
26 |
27 |
28 | def string_to_datetime(str_time):
29 | """
30 | #把字符串转成datetime
31 | :param str_time:
32 | :return: time.struct_time(tm_year=2018, tm_mon=10, tm_mday=1, tm_hour=0,
33 | tm_min=0, tm_sec=1, tm_wday=0, tm_yday=274, tm_isdst=-1)
34 |
35 | """
36 | return time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
37 |
38 |
39 | def string_to_timestamp(str_time):
40 | """
41 | #把字符串转成时间戳形式
42 | :param str_time:
43 | :return:
44 | """
45 | return time.mktime(string_to_datetime(str_time))
46 |
47 |
48 | def timestamp_to_string(stamp):
49 | """
50 | #把时间戳转成字符串形式
51 | :param stamp:
52 | :return:
53 | """
54 | return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(stamp))
55 |
56 |
57 | def datetime_to_timestamp(date_time):
58 | """
59 | #把datetime类型转外时间戳形式
60 | :param date_time:
61 | :return:
62 | """
63 | return time.mktime(date_time.timetuple())
64 |
65 |
66 | def change_days(com_date, day):
67 | """
68 | 推算多少天之后的日期,
69 | :param com_date: 日期字符串,格式为‘2018-10-01’ %Y-%m-%d
70 | :param day: 推算的天数,,往后是整数,之前是负数
71 | :return: 推算之后的日期字符串
72 | """
73 | date_obj = datetime.date(int(com_date[0:4]), int(com_date[5:7]), int(com_date[8:10]))
74 | days_com_date = (date_obj + datetime.timedelta(days=day)).strftime("%Y-%m-%d")
75 |
76 | return days_com_date
77 |
78 |
79 | def get_the_last_day_of_month(year, month):
80 | """
81 | 返回某个月的最后一天的日期
82 | :param year: int
83 | :param month: int
84 | :return: 日期,int
85 | """
86 | next_month = month + 1 if month < 12 else 1
87 | last_day = datetime.date(year, next_month, 1) - datetime.timedelta(days=1)
88 |
89 | return last_day.day
90 |
91 |
92 | def gen_date_series(begin_date, end_date):
93 | """
94 | 生成一个连续日期的序列
95 | :param begin_date:
96 | :param end_date:
97 | :return: list of date string
98 | """
99 | this_date = begin_date
100 | date_obj = datetime.date(int(begin_date[0:4]), int(begin_date[5:7]), int(begin_date[8:10]))
101 | end_date_obj = datetime.date(int(end_date[0:4]), int(end_date[5:7]), int(end_date[8:10]))
102 | date_series = []
103 |
104 | while date_obj <= end_date_obj:
105 | date_series.append(this_date)
106 | date_obj = date_obj + datetime.timedelta(days=1)
107 | this_date = date_obj.strftime("%Y-%m-%d")
108 |
109 | return date_series
--------------------------------------------------------------------------------
/models/lstm_cnn_2.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from keras.layers import concatenate
4 | import keras.backend as K
5 | from tensorflow import keras
6 | from utils.ml_utils import MLModel
7 | import tensorflow as tf
8 | # Convolution parameters
9 | kernel_size = [2,3,4,5]
10 | pool_size = 4
11 |
12 |
13 | class CNN_LSTM_2(MLModel):
14 | """多核CNN 然后 LSTM 的组合 """
15 | def __init__(self, hid_dim, dropout_rate, class_dim, **kwargs):
16 | """Initialize CNN_LSTM model.
17 | """
18 | super(CNN_LSTM_2, self).__init__(**kwargs)
19 | sentence_length = kwargs['sentence_length']
20 | input_layer = tf.keras.layers.Input(shape=(sentence_length,), dtype=tf.int32)
21 | drop = tf.keras.layers.Dropout(dropout_rate)(self.emb_layer(input_layer))
22 | conv = []
23 | for fsz in kernel_size:
24 | l_conv = tf.keras.layers.Conv1D(hid_dim,
25 | fsz,
26 | padding='valid',
27 | strides=1)(drop)
28 | BN = tf.keras.layers.BatchNormalization()(l_conv)
29 | l_conv = tf.keras.layers.Activation(activation='relu')(BN)
30 | print(l_conv.shape)
31 | pooling = tf.keras.layers.MaxPooling1D(pool_size=pool_size, padding='valid')(l_conv)
32 | ## if strides is None: strides = pool_size
33 | print("pooling:")
34 | print(pooling.shape)
35 | conv.append(pooling)
36 | merge = tf.keras.layers.concatenate(conv,axis=1)
37 | # 默认 CNN的filters和LSTM的输出节点数相同
38 | lstm = tf.keras.layers.LSTM(hid_dim)(merge)
39 | output = tf.keras.layers.Dense(class_dim, activation='softmax')(lstm)
40 | model = tf.keras.models.Model(inputs=[input_layer],outputs = output)
41 |
42 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
43 | optimizer="adam", # "adam" rmsprop
44 | metrics=["accuracy"])
45 | self.model = model
46 |
47 | class LSTM_CNN_2(MLModel):
48 | """先LSTM 再多核CNN 的组合 """
49 |
50 | def __init__(self, hid_dim, dropout_rate, class_dim, **kwargs):
51 | """Initialize CNN_LSTM model.
52 | """
53 | super(LSTM_CNN_2, self).__init__(**kwargs)
54 | #model = keras.Sequential()
55 | sentence_length = kwargs['sentence_length']
56 | input_layer = tf.keras.layers.Input(shape=(sentence_length,), dtype=tf.int32)
57 | layer = self.emb_layer(input_layer)
58 | lstm = tf.keras.layers.LSTM(hid_dim,return_sequences=True)(layer)
59 | convs = []
60 | for ksz in kernel_size:
61 |
62 | conv = tf.keras.layers.Conv1D(hid_dim,ksz,padding="valid")(lstm)
63 | pooling = tf.keras.layers.GlobalMaxPooling1D()(conv)
64 | # flat = tf.keras.layers.Flatten(pooling)
65 | convs.append(pooling)
66 | merge = tf.keras.layers.concatenate(convs,axis=1)
67 |
68 | drop = tf.keras.layers.Dropout(dropout_rate)(merge)
69 | output = tf.keras.layers.Dense(class_dim, activation="softmax")(drop)
70 |
71 | model = tf.keras.models.Model(inputs=[input_layer],outputs = output)
72 |
73 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
74 | optimizer="adam", # "adam" rmsprop
75 | metrics=["accuracy"])
76 |
77 | self.model = model
--------------------------------------------------------------------------------
/utils/ml_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
4 | import numpy as np
5 | from tensorflow import keras
6 |
7 |
8 | # import keras
9 |
10 |
11 | class MLModel():
12 | """机器学习的模型的基本类"""
13 |
14 | def __init__(self, emb_dim, embedding_vectors, num_words, sentence_length,
15 | hid_dim=None,
16 | class_dim=None,
17 | dropout_rate=None):
18 | """
19 | emb_dim: The dimension of the Embedding layer.
20 | num_words: 所使用的词向量的个数
21 | embedding_vectors: 预训练的词向量
22 | """
23 | self.emb_layer = self.create_embedding_layer(embedding_vectors, num_words, emb_dim, sentence_length)
24 |
25 | def create_embedding_layer(self, embedding_vectors, num_words, emb_dim, input_length):
26 | if embedding_vectors.any():
27 | emb_dim = embedding_vectors.shape[1]
28 |
29 | layer = keras.layers.Embedding(input_dim=num_words,
30 | weights=[embedding_vectors],
31 | trainable=False,
32 | output_dim=emb_dim,
33 | input_length=input_length)
34 | else:
35 | layer = keras.layers.Embedding(input_dim=num_words,
36 | output_dim=emb_dim,
37 | input_length=input_length)
38 |
39 | return layer
40 |
41 |
42 | def batch(reader, batch_size, drop_last=True):
43 | """
44 | 参考百度Senta项目
45 | Create a batched reader.
46 |
47 | :param reader: the data reader to read from.
48 | :type reader: callable
49 | :param batch_size: size of each mini-batch
50 | :type batch_size: int
51 | :param drop_last: drop the last batch, if the size of last batch is not equal to batch_size.
52 | 注意当batch_size > 全部样本个数的时候,一定要把drop_last设为 False,否则无数据返回
53 | :type drop_last: bool
54 | :return: the batched reader.
55 | :rtype: callable
56 | """
57 |
58 | def batch_reader():
59 | r = reader()
60 | b = []
61 | for instance in r:
62 | b.append(instance)
63 | if len(b) == batch_size:
64 | yield b
65 | b = []
66 | if drop_last == False and len(b) != 0:
67 | yield b
68 |
69 | return batch_reader
70 |
71 |
72 | def output_model_performance(preds, labels):
73 | """
74 | 输出总体正确率,每个类的精准率和召回率,f1,以及混淆矩阵
75 | :param preds: 预测的分类结果
76 | :param labels: 正确的分类标签
77 | :return:
78 | """
79 | preds = np.argmax(preds, axis=1)
80 | labels = np.argmax(labels, axis=1)
81 |
82 | print('############# 总体正确率=%f ###################' % accuracy_score(labels, preds))
83 | print('\n############# 每个类的精准率,召回率,F1 ###################')
84 | print(classification_report(labels, preds))
85 | print('################# 混淆矩阵 #######################')
86 |
87 | cm = confusion_matrix(labels, preds)
88 | print(cm)
89 |
90 | pred_data = np.sum(cm, axis=0)
91 | real_data = np.sum(cm, axis=1)
92 | real_good_ratio = real_data[2] * 1.0 / (real_data[0] + real_data[2])
93 | pred_good_ratio = pred_data[2] * 1.0 / (pred_data[0] + pred_data[2])
94 | print('\n################# 好评率 #######################')
95 | print('实际好评率=%f 预测好评率=%f' % (real_good_ratio, pred_good_ratio))
96 | print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n')
97 |
--------------------------------------------------------------------------------
/models/lstm.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from tensorflow import keras
4 | # import keras
5 | from utils.ml_utils import MLModel
6 |
7 |
8 | class SimpleLSTM(MLModel):
9 | """LSTM for sentimental analysis."""
10 |
11 | def __init__(self, hid_dim, dropout_rate, class_dim, **kwargs):
12 | """Initialize LSTM model.
13 | """
14 | super(SimpleLSTM, self).__init__(**kwargs)
15 | model = keras.Sequential()
16 |
17 | model.add(self.emb_layer)
18 | model.add(keras.layers.LSTM(hid_dim, dropout=dropout_rate,
19 | recurrent_dropout=dropout_rate))
20 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
21 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
22 | optimizer="adam", # "adam" rmsprop
23 | metrics=["accuracy"])
24 |
25 | self.model = model
26 |
27 |
28 | class BiLSTM(MLModel):
29 | """Bi LSTM for sentimental analysis."""
30 |
31 | def __init__(self, hid_dim, class_dim, dropout_rate, **kwargs):
32 | """Initialize Bi-LSTM model.
33 | """
34 |
35 | super(BiLSTM, self).__init__(**kwargs)
36 | model = keras.Sequential()
37 |
38 | model.add(self.emb_layer)
39 | model.add(keras.layers.Bidirectional(keras.layers.LSTM(hid_dim)))
40 | model.add(keras.layers.Dropout(dropout_rate))
41 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
42 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
43 | optimizer="adam", # "adam" rmsprop
44 | metrics=["accuracy"])
45 |
46 | self.model = model
47 |
48 |
49 | class StackedLSTM(MLModel):
50 | """两层LSTM 堆叠 参考腾讯公众号文章"""
51 |
52 | def __init__(self, hid_dim, class_dim, dropout_rate, **kwargs):
53 | """Initialize Bi-LSTM model.
54 | """
55 |
56 | super(StackedLSTM, self).__init__(**kwargs)
57 | model = keras.Sequential()
58 | hid_dim = 64
59 | dropout_rate = 0.1
60 |
61 | model.add(self.emb_layer)
62 | # l = keras.layers.Embedding(10000, 128, input_length=40)
63 | # model.add(l)
64 | model.add(keras.layers.LSTM(hid_dim, dropout=dropout_rate, return_sequences=True))
65 | model.add(keras.layers.LSTM(hid_dim, return_sequences=True))
66 | # inputs = keras.layers.Input(shape=(3, 2, 4))
67 | model.add(keras.layers.Flatten())
68 | model.add(keras.layers.Dense(class_dim)) # , activation = 'softmax'))
69 | model.add(keras.layers.Activation('softmax'))
70 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
71 | optimizer="adam", # "adam" rmsprop
72 | metrics=["accuracy"])
73 |
74 | self.model = model
75 |
76 |
77 | class GRU(MLModel):
78 | """LSTM for sentimental analysis."""
79 |
80 | def __init__(self, hid_dim, dropout_rate, class_dim, **kwargs):
81 | """Initialize LSTM model.
82 | """
83 | super(GRU, self).__init__(**kwargs)
84 | model = keras.Sequential()
85 |
86 | model.add(self.emb_layer)
87 | model.add(keras.layers.GRU(hid_dim, dropout=dropout_rate,
88 | recurrent_dropout=dropout_rate))
89 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
90 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
91 | optimizer="adam", # "adam" rmsprop
92 | metrics=["accuracy"])
93 |
94 | self.model = model
95 |
--------------------------------------------------------------------------------
/models/cnn.py:
--------------------------------------------------------------------------------
1 | """Model for sentiment analysis.
2 |
3 | The model makes use of concatenation of two CNN layers with
4 | different kernel sizes.
5 | """
6 |
7 | from __future__ import absolute_import
8 | from __future__ import division
9 | from __future__ import print_function
10 |
11 | import tensorflow as tf
12 | from utils.ml_utils import MLModel
13 | from tensorflow import keras
14 |
15 | # set parameters:
16 | kernel_size = 3
17 |
18 |
19 | class CNN_1_layers(MLModel):
20 | def __init__(self, hid_dim, class_dim, dropout_rate, **kwargs):
21 | """Initialize CNN model.
22 | Args:
23 | sentence_length: The number of words in each sentence.
24 | Longer sentences get cut, shorter ones padded.
25 | hid_dim: The dimension of the CNN layer. 即filter size
26 | class_dim: number of result classes
27 | dropout_rate: The portion of dropping value in the Dropout layer.
28 |
29 | """
30 |
31 | hidden_dims = hid_dim # dense layer的维度数
32 |
33 | super(CNN_1_layers, self).__init__(**kwargs)
34 | model = keras.Sequential()
35 |
36 | model.add(self.emb_layer)
37 | model.add(keras.layers.Conv1D(hid_dim,
38 | kernel_size,
39 | padding='valid',
40 | activation='relu',
41 | strides=1))
42 | # we use max pooling:
43 | model.add(keras.layers.GlobalMaxPooling1D())
44 |
45 | # We add a vanilla hidden layer:
46 | model.add(keras.layers.Dense(hidden_dims))
47 | model.add(keras.layers.Dropout(dropout_rate))
48 | model.add(keras.layers.Activation('relu'))
49 |
50 | # We project onto a output layer
51 | model.add(keras.layers.Dense(class_dim, activation='softmax'))
52 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
53 | optimizer="adam", # "adam" rmsprop
54 | metrics=["accuracy"])
55 |
56 | self.model = model
57 |
58 |
59 | class CNN_2_Layers(MLModel):
60 | """2 CNN layers concat , 来自google的research model中的例子"""
61 |
62 | def __init__(self, hid_dim, class_dim, dropout_rate, **kwargs):
63 | """Initialize CNN model.
64 |
65 | Args:
66 | sentence_length: The number of words in each sentence.
67 | Longer sentences get cut, shorter ones padded.
68 | hid_dim: The dimension of the CNN layer. 即filter size
69 | class_dim: number of result classes
70 | dropout_rate: The portion of dropping value in the Dropout layer.
71 |
72 | """
73 | super(CNN_2_Layers, self).__init__(**kwargs)
74 |
75 | sentence_length = kwargs['sentence_length']
76 | input_layer = tf.keras.layers.Input(shape=(sentence_length,), dtype=tf.int32)
77 |
78 | layer = self.emb_layer(input_layer)
79 |
80 | layer_conv3 = tf.keras.layers.Conv1D(hid_dim, kernel_size, activation="relu")(layer)
81 | layer_conv3 = tf.keras.layers.GlobalMaxPooling1D()(layer_conv3)
82 | print(layer_conv3)
83 |
84 | layer_conv4 = tf.keras.layers.Conv1D(hid_dim, kernel_size - 1, activation="relu", )(layer)
85 | layer_conv4 = tf.keras.layers.GlobalMaxPooling1D()(layer_conv4)
86 | print(layer_conv3)
87 | layer = tf.keras.layers.concatenate([layer_conv4, layer_conv3], axis=1)
88 | print(layer)
89 | layer = tf.keras.layers.BatchNormalization()(layer)
90 | layer = tf.keras.layers.Dropout(dropout_rate)(layer)
91 |
92 | output = tf.keras.layers.Dense(class_dim, activation="softmax")(layer)
93 |
94 | model = tf.keras.models.Model(inputs=[input_layer], outputs=output)
95 | model.compile(loss="categorical_crossentropy", # "binary_crossentropy"
96 | optimizer="adam", # "adam" rmsprop
97 | metrics=["accuracy"])
98 |
99 | self.model = model
100 |
--------------------------------------------------------------------------------
/data_process.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # 查看parse_args方法的实现可以了解命令执行的参数
4 | # ==============================================================================
5 | import logging
6 | import argparse
7 | import ast
8 | from utils import text_utils as tu
9 |
10 | logger = logging.getLogger("paddle-fluid")
11 | logger.setLevel(logging.INFO)
12 |
13 | def parse_args():
14 | parser = argparse.ArgumentParser("Sentiment Classification.")
15 | # training data path
16 | parser.add_argument(
17 | "--train_data_path",
18 | type=str,
19 | required=False,
20 | help="The path of trainning data. Should be given in train mode!")
21 | # test data path
22 | parser.add_argument(
23 | "--test_data_path",
24 | type=str,
25 | required=False,
26 | help="The path of test data. Should be given in eval or infer mode!")
27 | # word_dict path
28 | parser.add_argument(
29 | "--word_dict_path",
30 | type=str,
31 | required=True,
32 | help="The path of word dictionary.")
33 | # current mode
34 | parser.add_argument(
35 | "--mode",
36 | type=str,
37 | required=True,
38 | choices=['train', 'eval', 'infer'],
39 | help="train/eval/infer mode")
40 | # model type
41 | parser.add_argument(
42 | "--model_type",
43 | type=str,
44 | default="bilstm_net",
45 | help="type of model")
46 | # model save path
47 | parser.add_argument(
48 | "--model_path",
49 | type=str,
50 | default="models",
51 | required=True,
52 | help="The path to saved the trained models.")
53 | # Number of passes for the training task.
54 | parser.add_argument(
55 | "--num_passes",
56 | type=int,
57 | default=10,
58 | help="Number of passes for the training task.")
59 | # Batch size
60 | parser.add_argument(
61 | "--batch_size",
62 | type=int,
63 | default=256,
64 | help="The number of training examples in one forward/backward pass.")
65 | # lr value for training
66 | parser.add_argument(
67 | "--lr",
68 | type=float,
69 | default=0.002,
70 | help="The lr value for training.")
71 | # Whether to use gpu
72 | parser.add_argument(
73 | "--use_gpu",
74 | type=ast.literal_eval,
75 | default=False,
76 | help="Whether to use gpu to train the model.")
77 | # parallel train
78 | parser.add_argument(
79 | "--is_parallel",
80 | type=ast.literal_eval,
81 | default=False,
82 | help="Whether to train the model in parallel.")
83 | args = parser.parse_args()
84 | return args
85 |
86 |
87 | def process_xls_file():
88 | # xls_file = 'data/jiangjinfu_data_seg.xlsx'
89 | xls_file = 'data/50000_data.xlsx'
90 | xls_file = 'data/lidan_data_seg.xlsx'
91 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-7-yamy-805条.xlsx'
92 |
93 | # xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-8-付辛博-823条.xlsx'
94 | # xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-5-孟美岐-808条.xlsx'
95 | # xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-9-陈羽凡-854条.xlsx'
96 | # xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-6-薛之谦-712条.xlsx'
97 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-14-吴宣仪-748条.xlsx'
98 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-12-王宝强-747条.xlsx'
99 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-2-李雨桐-794条.xlsx'
100 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-15-蒋劲夫-680条.xlsx'
101 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-13-胡歌-677条.xlsx'
102 |
103 |
104 | # tu.read_xls_to_txt(xls_file, label_col=1, text_col=2)
105 | # xls_file = '/home/great/projects/rbfans/classifier/data/20000_3_data.xlsx'
106 | tu.read_xls_to_txt(xls_file, label_col=0, text_col=2, label_format='4class', need_seg=True)
107 |
108 |
109 | if __name__ == "__main__":
110 | # args = parse_args()
111 | process_xls_file()
112 |
--------------------------------------------------------------------------------
/funcs_test.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | from utils import text_utils as tu
4 | from utils import calculate_utils as cu
5 | import os
6 | import pandas as pd
7 |
8 | def cat():
9 | y = [1, 2, 3, 6]
10 | print(cu.to_categorical(y))
11 |
12 |
13 | def file_test():
14 | # xls_file = 'data/jiangjinfu_data_seg.xlsx'
15 | xls_file = 'data/50000_data.xlsx'
16 | xls_file = 'data/lidan_data_seg.xlsx'
17 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-7-yamy-805条.xls'
18 |
19 | xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-8-付辛博-823条.xls'
20 | # xls_file = '/home/great/projects/rbfans/classifier/data/艺人极性标注-20181229-5-孟美岐-808条.xls'
21 | # tu.read_xls_to_txt(xls_file, label_col=1, text_col=2)
22 | xls_file = '/home/great/projects/rbfans/classifier/data/20000_3_data.xlsx'
23 | tu.read_xls_to_txt(xls_file, label_col=1, text_col=2, label_format='common', need_seg=True)
24 |
25 |
26 | def vec_test():
27 | word_dict = tu.load_dict('data/3train.dict')
28 | vector_file = '/home/great/data/word2vec/sgns.weibo.bigram'
29 | vector_file = '/home/great/data/word2vec/vector.txt'
30 | vec = tu.load_word_embedding_vectors(word_dict, vector_file)
31 | pass
32 |
33 |
34 | def vec_train():
35 | train_data_path = 'data/20000_3_data.txt'
36 | word_dict_path = 'data/20000_3_data.dict'
37 | corpus = tu.Corpus(train_data_path, word_dict_path=word_dict_path, padding=False)
38 |
39 | tu.train_word_embedding_vectors(corpus, 100)
40 |
41 |
42 | def batch_eval_performance(batch_file_dir, model_name, batch=True):
43 | # --model_path models/save/cnn2_20000_3_train.h5 --mode train --train_data_path data/20000_3_data.txt --epochs 20 --model_type cnn_2_layers
44 | # dict = '/home/great/projects/experiment/data/3train.dict'
45 | # dict = '/home/great/projects/experiment/data/20000_3_data.dict'
46 | dict = '/home/great/projects/experiment/experiment_record/dict/db_sentiment_corpus_2.dict'
47 |
48 | # model = 'models/save/bilstm_3train.h5'
49 | # model = 'models/save/bi_lstm.h5'
50 | # model = 'models/save/cnn2_20000_3_train.h5'
51 | # model = 'models/save/cnn1_20000_3_train.h5'
52 | # model = 'models/save/cnnlstm_20000_3_layer.h5'
53 | # model = 'models/save/stacked_lstm_20000_3_layer.h5'
54 | # model = 'models/save/corpus_2_nn_layer.h5'
55 | # model = 'models/save/corpus_2_stacked_lstm_layer.h5'
56 | # model = 'models/save/corpus_2_cnn2_layer.h5'
57 | # model = 'models/save/corpus_2_bilstm_layer_8.h5'
58 | # model = 'models/save/corpus_2_cnn2_layer_3.h5'
59 | # model = 'models/save/corpus_2_simplenn_layer_1.h5'
60 |
61 | # model = 'models/save/corpus_2_stacked_lstm_layer_2.h5'
62 | # model = 'models/save/corpus_2_cnn_lstm_layer_2.h5'
63 | # model = 'models/save/corpus_2_simple_nn_layer_1.h5'
64 | # model = 'models/save/corpus_2_fasttext_layer_1.h5'
65 | model = 'models/save/%s.h5' % model_name
66 |
67 | # bash; source activate tf;
68 | cmd_line_base = 'python sentiment_classify.py --word_dict_path %s --mode eval --model_path %s --use_gpu True --data_file_path ' \
69 | % (dict, model)
70 |
71 | if os.path.exists(batch_file_dir) and batch:
72 | for dirnames, paths, filenames in os.walk(batch_file_dir):
73 | for file in filenames:
74 | (file_name, extension) = os.path.splitext(file)
75 | if extension.lower() == '.txt':
76 | test_file = os.path.join(dirnames, file)
77 | cmd_line = cmd_line_base + " " + test_file
78 | # print(cmd_line)
79 | os.system(cmd_line)
80 |
81 | else:
82 | test_file = 'data/db_sentiment_corpus_3.txt'
83 | cmd_line = cmd_line_base + " " + test_file
84 | os.system(cmd_line)
85 |
86 |
87 | def process_mysql_corpus():
88 | corpus_type = 2
89 |
90 | tu.read_mysql_to_txt(corpus_type)
91 | corpus_type = 3
92 |
93 | tu.read_mysql_to_txt(corpus_type)
94 |
95 | def xlsx_txt(old_path,new_path):
96 | """
97 | 数据库导出的xlsx文件转化为 label+"\t"+text 的txt语料格式
98 | :param old_path:
99 | :param new_path:
100 | :return:
101 | """
102 | # pd.read_excel(old_path)
103 | df = pd.read_excel(old_path)
104 | # df = df.reset_index(drop=True)
105 | # df.to_excel(old_path)
106 | df = df.loc[:,["label","target文本"]]
107 | print (df.head())
108 | with open(new_path,'w',encoding="utf8") as f:
109 | for i in range(df.shape[0]):
110 | # print(i)
111 | # print (df.loc[i,"target文本"])
112 | # print (str(df.loc[i,"label"])+"\t"+df.loc[i,"target文本"]+"\n")
113 | text = df.loc[i,"target文本"].replace('\n',"")
114 | f.write(str(df.loc[i,"label"])+"\t"+text.strip("//").strip()+"\n")
115 |
116 | if __name__ == '__main__':
117 | # import sys
118 | #
119 | # # file_test()
120 | # # vec_test()
121 | # # vec_train()
122 | #
123 | # path = '/home/great/projects/rbfans/classifier/data/'
124 | # # path = 'data/test'
125 | # if len(sys.argv) > 1 and sys.argv[1] == 'eval':
126 | # batch_eval_performance(path, sys.argv[2])
127 | # else:
128 | # process_mysql_corpus()
129 | xlsx_txt("C:/Users\Administrator\Desktop/ALL_VAL_DATA_drop_dup.xlsx","C:/Users\Administrator\Desktop/ALL_VAL_DATA_drop_dup.txt")
130 |
131 | # --model_path models/save/test.h5 --mode train --data_file_path data/db_sentiment_corpus_2.txt --epochs 20 --model_type cnn_lstm -g train_in_layer
132 |
133 | # --model_path models/save/test.h5 --mode train --sql_file_path experiment_record/sql/db_sentiment_corpus_2.sql --epochs 20 --model_type cnn_lstm -g train_in_layer --sql_file_path_eval_when_train experiment_record/sql/db_sentiment_corpus_3.sql
--------------------------------------------------------------------------------
/sentiment_classify.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # 查看parse_args方法的实现可以了解命令执行的参数
4 | # models基于keras实现
5 | #
6 | # ==============================================================================
7 |
8 | import logging
9 | import argparse
10 | import ast
11 | import tensorflow as tf
12 | from tensorflow import keras
13 | import numpy as np
14 | import os
15 | from utils import text_utils as tu
16 | from utils import ml_utils as mu
17 |
18 | from models import CNN_1_layers
19 | from models import CNN_2_Layers
20 | from models import SimpleNN
21 | from models import SimpleLSTM
22 | from models import BiLSTM
23 | from models import CNN_LSTM
24 | from models import StackedLSTM
25 | from models import FastText
26 | from models import GRU
27 | from models import CNN_LSTM_2
28 | from models import LSTM_CNN_2
29 |
30 | logger = logging.getLogger("sentiment_classify")
31 | logger.setLevel(logging.INFO)
32 |
33 | EMB_TYPE_FROM_EXISTED = 'from_existed' # 读取已有的向量文件
34 | EMB_TYPE_TRAIN_FROM_CORPUS = 'train_from_corpus' # 从语料中单独训练词向量
35 | EMB_TYPE_TRAIN_IN_LAYER = 'train_in_layer' # 在模型训练过程中同时生成词向量
36 |
37 | # 验证集的分裂比例
38 | VALIDATION_SPLIT = 0.2
39 |
40 | model_pools = {
41 | 'cnn_1_layer': CNN_1_layers,
42 | 'cnn_2_layers': CNN_2_Layers,
43 | 'simple_nn': SimpleNN,
44 | 'simple_lstm': SimpleLSTM,
45 | 'bi_lstm': BiLSTM,
46 | 'cnn_lstm': CNN_LSTM,
47 | 'stacked_lstm': StackedLSTM,
48 | 'fasttext': FastText,
49 | 'gru': GRU,
50 | 'cnn_lstm_2':CNN_LSTM_2,
51 | 'lstm_cnn_2':LSTM_CNN_2
52 | }
53 |
54 |
55 | def parse_args():
56 | parser = argparse.ArgumentParser("Sentiment Classification.")
57 | """文件格式的说明见text_util
58 | """
59 |
60 | # sql-file path
61 | parser.add_argument(
62 | "--sql_file_path",
63 | type=str,
64 | required=False,
65 | help="The path of sql-file.")
66 | # training data path
67 | parser.add_argument(
68 | "--data_file_path",
69 | type=str,
70 | required=False,
71 | help="The path of data. ")
72 |
73 | # for validate set: sql-file path when mode = train
74 | parser.add_argument(
75 | "--sql_file_path_eval_when_train",
76 | type=str,
77 | required=False,
78 | help="The path of eval sql-file when mode = train")
79 |
80 | # for validate set data path
81 | parser.add_argument(
82 | "--data_file_path_eval_when_train",
83 | type=str,
84 | required=False,
85 | help="The path of eval data when mode = train ")
86 |
87 | # word_dict path
88 | parser.add_argument(
89 | "--word_dict_path",
90 | type=str,
91 | required=True,
92 | default=None,
93 | help="The path of word dictionary. If mode is train then this argument is the path of Generated dictionary. If not ,this argument is the path of the existed dictionaray ")
94 | # current mode
95 | parser.add_argument(
96 | "--mode",
97 | type=str,
98 | required=True,
99 | choices=['train', 'eval', 'infer'],
100 | help="train/eval/infer mode")
101 | # model type
102 | parser.add_argument(
103 | "--model_type",
104 | type=str,
105 | choices=model_pools.keys(),
106 | default="cnn_lstm",
107 | help="type of model")
108 | # model save path
109 | parser.add_argument(
110 | "--model_path",
111 | type=str,
112 | default="models",
113 | required=True,
114 | help="The path to saved the trained models.")
115 | # lr value for training
116 | parser.add_argument(
117 | "--lr",
118 | type=float,
119 | default=0.002,
120 | help="The lr value for training.")
121 | # Whether to use gpu
122 | parser.add_argument(
123 | "--use_gpu",
124 | type=ast.literal_eval,
125 | default=False,
126 | help="Whether to use gpu to train the model.")
127 | # parallel train
128 | parser.add_argument(
129 | "--is_parallel",
130 | type=ast.literal_eval,
131 | default=False,
132 | help="Whether to train the model in parallel.")
133 | # dim of embedding layer
134 | parser.add_argument("-e", "--embedding_dim",
135 | help="The dimension of the Embedding layer.",
136 | type=int, default=128)
137 | # size of dictionary used
138 | parser.add_argument("-v", "--vocabulary_size",
139 | help="The number of the words to be considered "
140 | "in the dataset corpus.",
141 | type=int, default=6000)
142 | # the max length of sentence trained
143 | parser.add_argument("-s", "--sentence_length",
144 | help="The number of words in a data point."
145 | "Entries of smaller length are padded.",
146 | type=int, default=60)
147 | # dim of hidden CNN layer
148 | parser.add_argument("-c", "--hidden_dim",
149 | help="The number of the CNN layer filters. / lstm layer dim/ NN dense dim",
150 | type=int, default=128)
151 | # batch size
152 | parser.add_argument("-b", "--batch_size",
153 | help="The size of each batch for training.",
154 | type=int, default=500)
155 | # epoch number
156 | parser.add_argument("-p", "--epochs",
157 | help="The number of epochs for training.",
158 | type=int, default=55)
159 | # dropout rate
160 | parser.add_argument("-d", "--dropout",
161 | help="dropout ratio training.",
162 | type=float, default=0.5)
163 | # whether to gen embedding vectors from training corpus
164 | parser.add_argument("-g", "--use_embedding",
165 | help="how to use embedding vectors ",
166 | type=str,
167 | choices=['from_existed', 'train_from_corpus', 'train_in_layer'],
168 | default=EMB_TYPE_TRAIN_IN_LAYER)
169 | # model save path
170 | parser.add_argument(
171 | "-ep", "--embedding_path",
172 | type=str,
173 | default='/home/great/data/word2vec/sgns.weibo.word',
174 | help="The path to word vectors file.")
175 | args = parser.parse_args()
176 | return args
177 |
178 |
179 | def eval_model(corpus, loaded_model=None, model_path=None):
180 | """
181 | 验证函数
182 | """
183 |
184 | # score = new_model.evaluate(x_train, y_train, batch_size=batch_size)
185 | # tf.logging.info("Score: {}".format(score))
186 | # print(score)
187 | print('\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
188 | print('############# 测试文件 %s ###################' % corpus.corpus_path)
189 | print('############# 测试模型 %s ###################\n' % model_path)
190 |
191 | if loaded_model is None:
192 | loaded_model = keras.models.load_model(model_path)
193 |
194 | preds = infer_model(corpus, loaded_model)
195 | y_test = corpus.labels
196 |
197 | mu.output_model_performance(preds, y_test)
198 |
199 |
200 | def infer_model(corpus, loaded_model=None, model_path=None):
201 | """
202 | 预测函数
203 | """
204 |
205 | x_test = corpus.data
206 |
207 | if loaded_model is None:
208 | loaded_model = keras.models.load_model(model_path)
209 | # score = new_model.evaluate(x_train, y_train, batch_size=batch_size)
210 | # tf.logging.info("Score: {}".format(score))
211 | # print(score)
212 |
213 | preds = loaded_model.predict(x_test)
214 |
215 | return preds
216 |
217 |
218 | def train_model(model_type, emb_dim, hid_dim, batch_size, epochs, corpus, corpus_eval_when_train, dropout,
219 | embedding_type, voc_size, embedding_path=None, model_path=None):
220 | """训练和保存模型
221 | """
222 |
223 | assert model_path is not None, str(model_path) + "can not be found"
224 | print('\n############# 训练文件 %s ###################' % corpus.corpus_path)
225 | print('############# 训练模型 %s ###################\n' % model_path)
226 |
227 | embedding_vectors = np.array([])
228 | if embedding_type == EMB_TYPE_FROM_EXISTED:
229 | embedding_vectors = tu.load_word_embedding_vectors(corpus.word_dict, embedding_path)
230 | elif embedding_type == EMB_TYPE_TRAIN_FROM_CORPUS:
231 | embedding_vectors = tu.train_word_embedding_vectors(corpus, emb_dim)
232 |
233 | # voc_size = len(corpus.word_dict)
234 | sen_len = corpus.sentence_len
235 | num_class = corpus.num_class
236 |
237 | x_train = corpus.data
238 | y_train = corpus.labels
239 |
240 | model_class = model_pools[model_type]
241 | model = model_class(emb_dim=emb_dim,
242 | num_words=voc_size,
243 | sentence_length=sen_len,
244 | hid_dim=hid_dim,
245 | class_dim=num_class,
246 | dropout_rate=dropout,
247 | embedding_vectors=embedding_vectors,
248 | # input_length=sen_len
249 | ).model
250 | model.summary()
251 |
252 | checkpoint = tf.keras.callbacks.ModelCheckpoint(model_path, monitor='val_acc', verbose=1, save_best_only=True,
253 | save_weights_only=False, mode='auto', period=1)
254 | earlystop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0.05, patience=10, verbose=1, mode='auto')
255 |
256 | ################### for debug ###############################
257 | # from tensorflow.python import debug as tf_debug
258 | # sess = tf_debug.LocalCLIDebugWrapperSession(tf.Session(), dump_root='/home/great/temp/tmp')
259 | # # sess.add_tensor_filter('my_filter', my_filter_callable)
260 | # tf.keras.backend.set_session(sess)
261 | ##############################################################
262 |
263 | if corpus_eval_when_train:
264 | model.fit(x_train, y_train, batch_size=batch_size,
265 | validation_data=(corpus_eval_when_train.data, corpus_eval_when_train.labels), epochs=epochs,
266 | callbacks=[checkpoint, earlystop],class_weight="auto")
267 | else:
268 | model.fit(x_train, y_train, batch_size=batch_size,
269 | validation_split=VALIDATION_SPLIT, epochs=epochs,
270 | callbacks=[checkpoint, earlystop],class_weight="auto")
271 |
272 | # preds = model.predict(x_train)
273 | # y_test = corpus.labels
274 | #
275 | # # score = model.evaluate(x_train, y_test)
276 | # # print(score)
277 | #
278 | # mu.output_model_performance(preds, y_test)
279 | #
280 | # loaded_model = keras.models.load_model(model_path)
281 | # x_test = corpus_eval_when_train.data
282 | # y_test = corpus_eval_when_train.labels
283 | # data_file_path = 'data/test/db_sentiment_corpus_3.txt'
284 | # test_corpus = tu.Corpus(data_file_path, data_from_db=False)
285 | # x_test = test_corpus.data
286 | # y_test = test_corpus.labels
287 | # preds = loaded_model.predict(x_test)
288 | # mu.output_model_performance(preds, y_test)
289 |
290 |
291 | def main(args):
292 | if args.sql_file_path:
293 | data_file_path = args.sql_file_path
294 | data_from_db = True
295 | else:
296 | data_file_path = args.data_file_path
297 | data_from_db = False
298 |
299 | fasttext = args.model_type == 'fasttext'
300 |
301 | # train mode
302 | if args.mode == "train":
303 | # 训练集的语料
304 | train_corpus = tu.Corpus(file_path=data_file_path, data_from_db=data_from_db,sentence_len=args.sentence_length,vocabulary_size=args.vocabulary_size,
305 | word_dict_path=args.word_dict_path, fasttext=fasttext)
306 |
307 | # 验证集的语料, 如为None则从训练集split
308 | corpus_eval_when_train = None
309 | if args.sql_file_path_eval_when_train:
310 | corpus_eval_when_train = tu.Corpus(file_path=args.sql_file_path_eval_when_train, data_from_db=True,
311 | word_dict_path=args.word_dict_path, fasttext=fasttext)
312 | elif args.data_file_path_eval_when_train:
313 | corpus_eval_when_train = tu.Corpus(file_path=args.data_file_path_eval_when_train, data_from_db=False,
314 | word_dict_path=args.word_dict_path, fasttext=fasttext)
315 |
316 | train_model(model_type=args.model_type,
317 | emb_dim=args.embedding_dim,
318 | hid_dim=args.hidden_dim,
319 | batch_size=args.batch_size,
320 | epochs=args.epochs,
321 | corpus=train_corpus,
322 | corpus_eval_when_train=corpus_eval_when_train,
323 | dropout=args.dropout,
324 | voc_size=train_corpus.voc_size,
325 | model_path=args.model_path,
326 | embedding_type=args.use_embedding,
327 | embedding_path=args.embedding_path)
328 |
329 | # eval_model(corpus=corpus, model_path=args.model_path)
330 |
331 | # paddle 作为参考
332 | # train_net(
333 | # train_reader,
334 | # word_dict,
335 | # args.model_type,
336 | # args.use_gpu,
337 | # args.is_parallel,
338 | # args.model_path,
339 | # args.lr,
340 | # args.batch_size,
341 | # args.num_passes)
342 |
343 | # eval mode
344 | elif args.mode == "eval":
345 | assert args.model_path is not None, str(args.model_path) + "can not be found"
346 | loaded_model = keras.models.load_model(args.model_path)
347 | corpus = tu.Corpus(file_path=data_file_path, data_from_db=data_from_db,
348 | fasttext=fasttext, word_dict_path=args.word_dict_path,
349 | for_test=True)
350 | eval_model(corpus=corpus, loaded_model=loaded_model, model_path=args.model_path)
351 |
352 | # infer mode
353 | elif args.mode == "infer":
354 | assert args.model_path is not None, str(args.model_path) + "can not be found"
355 | loaded_model = keras.models.load_model(args.model_path)
356 | corpus = tu.Corpus(file_path=data_file_path, data_from_db=data_from_db,
357 | fasttext=fasttext, word_dict_path=args.word_dict_path,
358 | for_test=True)
359 | return infer_model(corpus=corpus, loaded_model=loaded_model, model_path=args.model_path)
360 |
361 |
362 | if __name__ == "__main__":
363 | """
364 | readme:
365 | 1.如果是从mysql中读取语料, 那么sql语句最后返回的结果一定要有label和text两个字段, 也就是说需要对语料字段进行重命名
366 | e.g. select label, sentence_now as text from sentiment_label_no_aspect where corpus_type = 3;
367 | 2.生成的字典文件和model文件在项目的experiment_record中
368 | """
369 | # 屏蔽日志
370 | os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
371 | argments = parse_args()
372 | main(argments)
373 |
374 | # train parameters
375 | # --model_path models/save/cnn2layers.h5 --mode train --train_data_path data/3train.txt --word_dict_path data/3train.dict --epochs 2 --model_type simple_nn
376 | # --model_path models/save/lstm_age.h5 --mode train --train_data_path /home/great/projects/age/data/age_20w.txt --epochs 20 --model_type lstm
377 |
378 | # python sentiment_classify.py --model_path models/save/cnn_lstm_all_corpus_2_v1.h5 --mode train --data_file_path C:/Users\Administrator\Desktop/ALL_TRAIN_DATA_drop_dup.txt --epochs 2 --model_type cnn_lstm_2 -g train_in_layer --data_file_path_eval_when_train C:/Users\Administrator\Desktop/ALL_VAL_DATA_drop_dup.txt --vocabulary_size 4000 --sentence_length 40 --hidden_dim 10 --embedding_dim 10 --batch_size 1000 --dropout 0.8 --lr 0.001 --word_dict_path my_test_dict.txt
379 |
380 | # eval parameters
381 | # --model_path models/save/cnn2layers.h5 --mode eval --test_data_path data/3test.txt --word_dict_path data/3train.dict
382 | # --model_path models/save/lstm_age.h5 --mode eval --test_data_path data/3test.txt --word_dict_path data/3train.dict
383 |
384 | ## 服务器上
385 | # python sentiment_classify.py --model_path /home/dminer/luoxinyu/╟щ╕╨╖╓╬Ў╩╡╤щ19_2_14/models/save/cnn_lstm_2_all_corpus_2_v2.h5 --mode train --data_file_path /home/dminer/luoxinyu/╟щ╕╨╖╓╬Ў╩╡╤щ19_2_14/data/ALL_TRAIN_DATA_drop_dup.txt --epochs 55 --model_type cnn_lstm_2 -g train_in_layer --data_file_path_eval_when_train /home/dminer/luoxinyu/╟щ╕╨╖╓╬Ў╩╡╤щ19_2_14/data/ALL_VAL_DATA_drop_dup.txt --vocabulary_size 10000 --sentence_length 40 --hidden_dim 512 --embedding_dim 512 --batch_size 1024 --dropout 0.5 --lr 0.01 --word_dict_path /home/dminer/luoxinyu/╟щ╕╨╖╓╬Ў╩╡╤щ19_2_14/experiment_record/dict/cnn_lstm_2_dict_2.txt
386 |
--------------------------------------------------------------------------------
/utils/text_utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | (1)语料格式
4 | 1)原始语料:xls格式,未分词
5 | 2)结果语料:
6 | 第一列为分类标签, \tab隔开,接着是已分词的文本,在一行中,
7 | 文件路径被传入分类器
8 | 3)缓存语料:pickle格式
9 | 4)标签说明,极性分类为0:负面,1中性,2正面
10 |
11 | (2)字典生成 ,格式为文本格式,一行一个词
12 |
13 | """
14 |
15 | import xlrd
16 | import numpy as np
17 | import random
18 | import os
19 | from pyltp import Segmentor
20 | import six
21 | import pickle
22 | import multiprocessing
23 | from gensim.models.word2vec import Word2Vec
24 | import re
25 |
26 | from . import file_utils as fu
27 | from . import calculate_utils as cu
28 | from . import mysql_utils as mysql
29 |
30 | """
31 | PAD_CHAR 补齐的词
32 | START_CHAR 句子开头
33 | END_CHAR 句子结束
34 | UNK_CHAR 忽略的词,或者说unknown的词
35 | """
36 | PAD_CHAR = 0
37 | START_CHAR = 1
38 | END_CHAR = 2
39 | UNK_CHAR = 3
40 |
41 | STR_PAD_CHAR = ""
42 | STR_START_CHAR = ""
43 | STR_UNK_CHAR = ""
44 | STR_END_CHAR = ""
45 |
46 | MAX_SENTENCE_LENGTH = 40
47 | VOCABULARY_SIZE = 6000
48 |
49 | STOP_WORDS_FILE = 'data/dict/stopwords.txt'
50 |
51 | DB_LABEL = "db_sentiment_corpus"
52 |
53 | CACHE_DIR = 'data/cache'
54 |
55 | N_GRAM = 3
56 |
57 |
58 | class Corpus:
59 | """
60 | 关于语料处理的类
61 | """
62 |
63 | def __init__(self, word_dict_path, data_from_db, file_path=None, sql_str=None, one_hot=True,
64 | padding=True, sentence_len=MAX_SENTENCE_LENGTH, vocabulary_size=VOCABULARY_SIZE,
65 | stop_words_file=STOP_WORDS_FILE, fasttext=False, for_test=False, is_shuffle=True):
66 | """
67 | 构造方法
68 | :param word_dict_path: 词典路径
69 | :param data_from_db: 语料是否来自数据库
70 | :param file_path: 语料(格式为上面说明中结果语料)的文件路径
71 | :param sql_str: sql语句用于提取语料
72 | :param one_hot: 是否为np数组的格式,即标签为one-hot
73 | :param padding: 是否统一句子长度,不够的补齐,过长的截取
74 | :param sentence_len: 统一的句子长度
75 | :param stop_words_file: 停用词的文件路径
76 | :param fasttext: 是否使用fasttext模型
77 | :param for_test: True,用于测试(即eval和infer模式),False:用于训练
78 | :param is_shuffle: 对语料是否进行shuffle操作
79 | """
80 | self.sentence_len = sentence_len
81 | self.corpus_path = file_path
82 |
83 | if data_from_db and sql_str:
84 | corpus_list = get_corpus_list_from_db(sql_str=sql_str)
85 | elif data_from_db:
86 | corpus_list = get_corpus_list_from_db(data_path=file_path)
87 | else:
88 | corpus_list = get_corpus_list_from_file(file_path)
89 |
90 | self.data, self.labels, self.word_dict = prepare_data(corpus_list, word_dict_path, shuffle=is_shuffle,
91 | vocabulary_size=vocabulary_size,
92 | stop_words_file=stop_words_file)
93 |
94 | self.voc_size = len(self.word_dict)
95 |
96 | # 从0开始分类
97 | self.num_class = max(self.labels) + 1
98 | if one_hot:
99 | self.labels = cu.to_categorical(self.labels)
100 | self.num_class = self.labels.shape[1]
101 |
102 | if fasttext:
103 | self.voc_size, self.data = add_n_gram_features(self.data, N_GRAM, self.voc_size,
104 | use_cached_ngram=for_test)
105 |
106 | if padding:
107 | self.data = pad_sequences(self.data, maxlen=sentence_len, padding='post', value=PAD_CHAR)
108 |
109 |
110 | def prepare_data(corpus_list, word_dict_path, shuffle, vocabulary_size, stop_words_file=None):
111 | """
112 | 从数据库中准备语料
113 | :param corpus_list: 语料list
114 | :param word_dict_path: 字典保存地址
115 | :param stop_words_file:停用词的文件路径
116 | :param shuffle:将语料转化成向量时是否需要shuffle
117 | :return:
118 | """
119 | if word_dict_path and os.path.exists(word_dict_path):
120 | # assert os.path.exists(word_dict_path), "The given word dictionary dose not exist."
121 | print("load_dict")
122 | word_dict = load_dict(word_dict_path)
123 | else:
124 | print ("gen_dict")
125 | word_dict = gen_dict(corpus_list, count_word_frequece = True,stop_words_file=stop_words_file, vocabulary_size=vocabulary_size)
126 | # print (word_dict)
127 | # 保存词典
128 | save_word_dict(word_dict_path, word_dict)
129 | # 将语料和标签转换成向量的形式, 同时向量
130 | x, y = corpus_to_vector(corpus_list, word_dict, is_shuffle=shuffle)
131 |
132 | return x, y, word_dict
133 |
134 |
135 | def get_corpus_list_from_db(data_path=None, sql_str=None):
136 | """
137 | 从数据库的中查询语料 放入corpus_list中
138 | :param data_path: sql语句放在文件里, 这里是文件的路径
139 | :param sql_str: sql语句
140 | :return: 包含语料的list
141 | """
142 |
143 | if sql_str:
144 | sql = sql_str
145 | else:
146 | assert os.path.exists(data_path), "The given sql_file_path does not exist."
147 | sql = get_sql_str(data_path)
148 |
149 | result = mysql.execute_mysql_sql(DB_LABEL, sql)
150 | corpus_list = []
151 | for record in result:
152 | label = str(record["label"])
153 | sen = process_text(record["text"])
154 | corpus_list.append(label + "\t" + sen)
155 | return corpus_list
156 |
157 |
158 | def get_corpus_list_from_file(corpus_path):
159 | """
160 | 从原料文件中生成包含语料的list
161 | :param corpus_path:语料文件路径
162 | :return:
163 | """
164 | assert os.path.exists(corpus_path), "The given data file does not exist."
165 | with open(corpus_path, "r", encoding="utf-8") as lines:
166 | corpus_list = [line.split("\t")[0] + "\t" + process_text(line.split("\t")[1]) for line in lines.readlines() if "\t" in line]
167 | return corpus_list
168 |
169 |
170 | def process_text(text):
171 | """
172 | 预处理语料
173 | :param text:
174 | :return:
175 | """
176 | sen = ' '.join(text.strip().split())
177 | sen = pre_process_weibo(sen)
178 | return sen
179 |
180 |
181 | def get_sql_str(data_path):
182 | """
183 | 获得文件中的sql语句
184 | :param data_path:
185 | :return:
186 | """
187 | with open(data_path, "r", encoding="utf-8") as file:
188 | sql_str = file.readline()
189 | return sql_str
190 |
191 |
192 | def save_word_dict(word_dict_path, word_dict):
193 | """
194 | 将词典保存成文件
195 | :param word_dict_path: 要将词典保存的路径
196 | :param word_dict:
197 | :return:
198 | """
199 | with open(word_dict_path, 'w', encoding="utf-8") as f:
200 | for k,v in word_dict.items():
201 | f.write(str(k) + "\t"+str(v)+'\n')
202 |
203 |
204 | def gen_word_frequece_dict(word_dict,list, stop_words):
205 | """
206 | 生成词频字典
207 | :param list: 词列表
208 | :param stop_words: 停用词列表
209 | :return: 词频字典
210 | """
211 | for word in list:
212 | if word not in stop_words:
213 | if word not in word_dict:
214 | word_dict[word] = 1
215 | else:
216 | word_dict[word] += 1
217 | return word_dict
218 |
219 |
220 | def gen_dict(lines, vocabulary_size, stop_words_file=None, use_common_words=True, count_word_frequece=False):
221 | """
222 | 从结果语料中生成词典
223 | :param lines: 语料list
224 | :param stop_words_file: 停用词文件路径
225 | :param use_common_words: 是否加入通用词
226 | :return:
227 | """
228 |
229 | wid = 0
230 | word_dict = {}
231 | word_frequece_dict = {}
232 | stop_words = []
233 |
234 | if stop_words_file:
235 | if os.path.exists(stop_words_file):
236 | with open(stop_words_file, 'r', encoding="utf-8") as f:
237 | stop_words = f.readlines()
238 | stop_words = [word.strip() for word in stop_words]
239 |
240 | for line in lines:
241 |
242 | cols = line.strip().split("\t")
243 | # assert len(cols) > 1, '语料格式有问题,句子为空'
244 | if len(cols) == 1 and len(cols[0]) == 1:
245 | # 第一列为label, 第二列为空
246 | cols.append('')
247 | else:
248 | assert len(cols) > 1, '语料格式有问题,句子为空: ' + cols[0]
249 |
250 | if count_word_frequece:
251 | word_frequece_dict = gen_word_frequece_dict(word_frequece_dict,cols[1].split(), stop_words)
252 |
253 | else:
254 | for word in cols[1].split():
255 | if word not in word_dict and word not in stop_words:
256 | word_dict[word] = wid
257 | wid += 1
258 | if count_word_frequece:
259 | sorted_word_frequece_list = sorted(word_frequece_dict.items(), key=lambda x: x[1], reverse=True)[
260 | :vocabulary_size]
261 | # print(sorted_word_frequece_list)
262 | for tuple in sorted_word_frequece_list:
263 | word_dict[tuple[0]] = wid
264 | wid += 1
265 | if use_common_words:
266 | word_dict = add_common_words_to_dict(word_dict)
267 |
268 | return word_dict
269 |
270 |
271 | def add_common_words_to_dict(word_dict):
272 | """
273 | 在原来词典中增加通用词
274 | :param word_dict: 原始词典
275 | :return:
276 | """
277 | # 增加4个通用词
278 | vocab_from = 4
279 | new_word_dict = {k: (v + vocab_from) for k, v in word_dict.items()}
280 |
281 | new_word_dict[STR_PAD_CHAR] = PAD_CHAR
282 | new_word_dict[STR_END_CHAR] = END_CHAR
283 | new_word_dict[STR_START_CHAR] = START_CHAR
284 | new_word_dict[STR_UNK_CHAR] = UNK_CHAR
285 |
286 | return new_word_dict
287 |
288 |
289 | def reverse_word_index(vocab):
290 | """
291 | 反转词典的k,v,为了能够打印出原始语料
292 | :param vocab:
293 | :return:
294 | """
295 | word_index = dict([(value, key) for (key, value) in vocab.items()])
296 |
297 | return word_index
298 |
299 |
300 | def decode_review(text_vec):
301 | """
302 | 根据词表的index值将词向量输出为原始语料
303 | :param text_vec:
304 | :return:
305 | """
306 | return ' '.join([reverse_word_index.get(i, '?') for i in text_vec])
307 |
308 |
309 | def corpus_to_vector(lines, word_dict, is_shuffle=True):
310 | """
311 | 参考百度Senta项目
312 | Convert word sequence into slot
313 |
314 | :param lines: 原始句子的list,一行一个句子
315 | :param word_dict: 字典
316 | :param is_shuffle: 是否打乱原来的顺序
317 | :return:
318 | """
319 |
320 | unk_id = UNK_CHAR
321 | all_data = []
322 |
323 | for line in lines:
324 | cols = line.strip().split("\t")
325 | # if len(cols) < 2: continue
326 | if len(cols) == 1 and len(cols[0]) == 1:
327 | # 第一列为label, 第二列为空
328 | cols.append('')
329 | else:
330 | assert len(cols) > 1, '语料格式有问题,句子为空: ' + cols[0]
331 | label = int(cols[0])
332 | wids = [word_dict[x] if x in word_dict else unk_id
333 | for x in cols[1].split(" ")]
334 | all_data.append((wids, label))
335 | if is_shuffle:
336 | random.shuffle(all_data)
337 |
338 | x = []
339 | y = []
340 | for doc, label in all_data:
341 | x.append(doc)
342 | y.append(label)
343 | return x, y
344 |
345 |
346 | def load_dict(word_dict_path, use_common_words=True):
347 | """
348 | :param word_dict_path: 已有词典路径,词典的每一行为一个词
349 | :param use_common_words: 是否利用通用词
350 | load the given vocabulary
351 | """
352 | word_dict = {}
353 | with open(word_dict_path, encoding="utf-8") as f:
354 | for line in f:
355 | word_dict[line.strip().split("\t")[0]] = int(line.strip().split("\t")[1])
356 |
357 | return word_dict
358 |
359 | def pre_process_weibo(weibo_text):
360 | """
361 | 处理的内容包括: # #话题,//@转发, 目标entity, @微博号, 表情
362 | 停用词(常见无意义词,高频词,非汉语,数字,url)
363 | 标点符号?
364 | :param weibo_text:
365 | :return:
366 | """
367 | # 替换entity, 避免对于实体对象产生记忆
368 | weibo_text = re.sub(re.compile("entity_7_(\d)+_target"), '[obj_star] ', weibo_text)
369 | weibo_text = re.sub(re.compile("entity_7_(\d)+([^_\d]|$)"), '[other_star] ', weibo_text).strip()
370 | weibo_text = re.sub(re.compile("entity_4_(\d)+_target"), '[obj_movie] ', weibo_text)
371 | weibo_text = re.sub(re.compile("entity_4_(\d)+([^_\d]|$)"), '[other_movie] ', weibo_text).strip()
372 | weibo_text = re.sub(re.compile("entity_5_(\d)+_target"), '[obj_telp] ', weibo_text)
373 | weibo_text = re.sub(re.compile("entity_5_(\d)+([^_\d]|$)"), '[other_telp] ', weibo_text).strip()
374 | weibo_text = re.sub(re.compile("entity_680_(\d)+_target"), '[obj_ent] ', weibo_text)
375 | weibo_text = re.sub(re.compile("entity_680_(\d)+([^_\d]|$)"), '[other_ent] ', weibo_text).strip()
376 | weibo_text = re.sub(re.compile("entity_790_(\d)+_target"), '[obj_general] ', weibo_text)
377 | weibo_text = re.sub(re.compile("entity_790_(\d)+([^_\d]|$)"), '[other_general] ', weibo_text).strip()
378 |
379 | # 去掉停用词
380 | # TODO 主体停用词目前是在生成词典的时候进行处理的,那么会用UNK_CHAR代替,还是在预处理的时候直接过滤掉
381 | # TODO 微博号的处理应该在分词之前
382 |
383 | # 去掉url
384 | weibo_text = re.sub(re.compile("http : / / t.cn / [a-zA-Z0-9]+"), '', weibo_text)
385 |
386 | # 去掉话题
387 | weibo_text = re.sub(re.compile("#.*#"), '', weibo_text)
388 |
389 | # 去掉转发的微博号
390 | weibo_text = re.sub(re.compile("/ / @ .* :"), '', weibo_text)
391 |
392 | # 整个去掉原微博 目前使用后性能则降低
393 | # weibo_text = re.sub(re.compile("/ / @ .*"), '', weibo_text)
394 |
395 | # 还原分开的表情
396 | re.sub(re.compile("\[ (.+?) \]"), r"[\1]", weibo_text)
397 |
398 | return weibo_text
399 |
400 |
401 | def read_mysql_to_txt(corpus_type):
402 | db_label = 'db_sentiment_corpus'
403 |
404 | sql = 'SELECT s1.* from sentiment_label_no_aspect s1, sentiment_label_no_aspect s2 ' \
405 | 'where s1.corpus_type = 5 and s1.origin_sentence_id = s2.id and s2.corpus_type = %d' % corpus_type
406 | result = mysql.execute_mysql_sql(db_label, sql)
407 | pass
408 |
409 | text_file = 'data/%s_%d.txt' % (db_label, corpus_type)
410 | with open(text_file, 'w', encoding="utf-8") as f:
411 | for sentence in result:
412 | label = 1 if sentence['label'] > 2 else sentence['label']
413 | sen = ' '.join(sentence['sentence_now'].strip().split())
414 | sen = pre_process_weibo(sen)
415 | f.write('%d\t%s\n' % (label, sen))
416 |
417 |
418 | def read_xls_to_txt(path, sheets=[0], drop_head=True, label_col=0,
419 | text_col=1, label_format='common', need_seg=False):
420 | """
421 | :param path:
422 | :param sheets:
423 | :param drop_head:
424 | :param label_col:
425 | :param text_col:
426 | :param label_format:
427 | :param need_seg:
428 | :return:
429 | """
430 |
431 | data = xlrd.open_workbook(path) # 打开xls文件
432 | folder, label_text, _ = fu.get_file_info(path)
433 | label_text = folder + '/' + label_text + ".txt"
434 | with open(label_text, 'w') as fout:
435 | if need_seg:
436 | # import ainlpResource
437 |
438 | # resource = ainlpResource.Resource()
439 | # resourcepath = resource.getResource(True, "global")
440 |
441 | LTP_DATA_DIR = '/home/great/data/models/ltp/ltp_data_v3.4.0'
442 | cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') ##模型的地址
443 | ltp = Segmentor()
444 | ltp.load(cws_model_path) # , resourcepath) load_with_lexicon
445 |
446 | for s in sheets:
447 | table = data.sheets()[s] # 打开sheet1
448 | nrows = table.nrows # 行数
449 | for i in range(nrows):
450 | if drop_head and i == 0: # 跳过第一行
451 | continue
452 |
453 | row_value = table.row_values(i)
454 | if label_format == 'common':
455 | label = '0' if row_value[label_col] == -1 else '1' if row_value[label_col] == 0 else '2'
456 | else:
457 | label_map = {-1: '0', 0: '1', 1: '2', 5: '1'}
458 |
459 | label = label_map[row_value[label_col]] if row_value[label_col] in label_map else '1'
460 |
461 | text = ' '.join(row_value[text_col].strip().split()) # .encode('utf-8')
462 | if need_seg:
463 | words = ltp.segment(text)
464 | text = ' '.join(words)
465 |
466 | if not text: continue
467 | one_line = label + '\t' + text + '\n'
468 | fout.write(one_line)
469 |
470 | if need_seg:
471 | ltp.release()
472 |
473 |
474 | def _remove_long_seq(maxlen, seq, label):
475 | """参考 tf.keras.load IMDB dataset的方法.
476 | Removes sequences that exceed the maximum length.
477 |
478 | # Arguments
479 | maxlen: Int, maximum length of the output sequences.
480 | seq: List of lists, where each sublist is a sequence.
481 | label: List where each element is an integer.
482 |
483 | # Returns
484 | new_seq, new_label: shortened lists for `seq` and `label`.
485 | """
486 | new_seq, new_label = [], []
487 | for x, y in zip(seq, label):
488 | if len(x) < maxlen:
489 | new_seq.append(x)
490 | new_label.append(y)
491 | return new_seq, new_label
492 |
493 |
494 | def pad_sentence(sentence, sentence_length):
495 | """Pad the given sentense at the end.
496 |
497 | If the input is longer than sentence_length,
498 | the remaining portion is dropped.
499 | END_CHAR is used for the padding.
500 |
501 | Args:
502 | sentence: A numpy array of integers.
503 | sentence_length: The length of the input after the padding.
504 | Returns:
505 | A numpy array of integers of the given length.
506 | """
507 | sentence = sentence[:sentence_length]
508 | if len(sentence) < sentence_length:
509 | sentence = np.pad(sentence, (0, sentence_length - len(sentence)),
510 | "constant", constant_values=(START_CHAR, END_CHAR))
511 |
512 | return sentence
513 |
514 |
515 | def pad_sequences(sequences, maxlen=None, dtype='int32',
516 | padding='pre', truncating='pre', value=0.):
517 | """Pads sequences to the same length.
518 |
519 | This function transforms a list of
520 | `num_samples` sequences (lists of integers)
521 | into a 2D Numpy array of shape `(num_samples, num_timesteps)`.
522 | `num_timesteps` is either the `maxlen` argument if provided,
523 | or the length of the longest sequence otherwise.
524 |
525 | Sequences that are shorter than `num_timesteps`
526 | are padded with `value` at the end.
527 |
528 | Sequences longer than `num_timesteps` are truncated
529 | so that they fit the desired length.
530 | The position where padding or truncation happens is determined by
531 | the arguments `padding` and `truncating`, respectively.
532 |
533 | Pre-padding is the default.
534 |
535 | # Arguments
536 | sequences: List of lists, where each element is a sequence.
537 | maxlen: Int, maximum length of all sequences.
538 | dtype: Type of the output sequences.
539 | To pad sequences with variable length strings, you can use `object`.
540 | padding: String, 'pre' or 'post':
541 | pad either before or after each sequence.
542 | truncating: String, 'pre' or 'post':
543 | remove values from sequences larger than
544 | `maxlen`, either at the beginning or at the end of the sequences.
545 | value: Float or String, padding value.
546 |
547 | # Returns
548 | x: Numpy array with shape `(len(sequences), maxlen)`
549 |
550 | # Raises
551 | ValueError: In case of invalid values for `truncating` or `padding`,
552 | or in case of invalid shape for a `sequences` entry.
553 | """
554 | if not hasattr(sequences, '__len__'):
555 | raise ValueError('`sequences` must be iterable.')
556 | lengths = []
557 | for x in sequences:
558 | if not hasattr(x, '__len__'):
559 | raise ValueError('`sequences` must be a list of iterables. '
560 | 'Found non-iterable: ' + str(x))
561 | lengths.append(len(x))
562 |
563 | num_samples = len(sequences)
564 | if maxlen is None:
565 | maxlen = np.max(lengths)
566 |
567 | # take the sample shape from the first non empty sequence
568 | # checking for consistency in the main loop below.
569 | sample_shape = tuple()
570 | for s in sequences:
571 | if len(s) > 0:
572 | sample_shape = np.asarray(s).shape[1:]
573 | break
574 |
575 | is_dtype_str = np.issubdtype(dtype, np.str_) or np.issubdtype(dtype, np.unicode_)
576 | if isinstance(value, six.string_types) and dtype != object and not is_dtype_str:
577 | raise ValueError("`dtype` {} is not compatible with `value`'s type: {}\n"
578 | "You should set `dtype=object` for variable length strings."
579 | .format(dtype, type(value)))
580 |
581 | x = np.full((num_samples, maxlen) + sample_shape, value, dtype=dtype)
582 | for idx, s in enumerate(sequences):
583 | if not len(s):
584 | continue # empty list/array was found
585 | if truncating == 'pre':
586 | trunc = s[-maxlen:]
587 | elif truncating == 'post':
588 | trunc = s[:maxlen]
589 | else:
590 | raise ValueError('Truncating type "%s" '
591 | 'not understood' % truncating)
592 |
593 | # check `trunc` has expected shape
594 | trunc = np.asarray(trunc, dtype=dtype)
595 | if trunc.shape[1:] != sample_shape:
596 | raise ValueError('Shape of sample %s of sequence at position %s '
597 | 'is different from expected shape %s' %
598 | (trunc.shape[1:], idx, sample_shape))
599 |
600 | if padding == 'post':
601 | x[idx, :len(trunc)] = trunc
602 | elif padding == 'pre':
603 | x[idx, -len(trunc):] = trunc
604 | else:
605 | raise ValueError('Padding type "%s" not understood' % padding)
606 | return x
607 |
608 |
609 | def load_word_embedding_vectors(word_dict, vector_file):
610 | """
611 |
612 | :param word_dict: 词典
613 | :param vector_file: 词向量文件
614 | :return:
615 | """
616 | path, cache_name, _ = fu.get_file_info(vector_file)
617 | cache_file = os.path.join(path, cache_name + '.pkl')
618 | if os.path.exists(cache_file):
619 | with open(cache_file, 'rb') as f:
620 | word_embedding_vectors = pickle.load(f)
621 | return word_embedding_vectors
622 |
623 | with open(vector_file, 'r') as f:
624 | # first line
625 | s = f.readline()
626 | num_words, dimension = s.strip().split()
627 | dimension = int(dimension)
628 |
629 | print('######### 词向量文件 %s #################' % vector_file)
630 | print('词数: %s 维度: %d' % (num_words, dimension))
631 |
632 | # 初始化 索引为0的词语,词向量全为0
633 | word_embedding_vectors = np.zeros((len(word_dict), dimension))
634 | num_got_vec = 0
635 | num_lines = 0
636 |
637 | for line in f:
638 | segs = line.strip().split()
639 | word = segs[0]
640 | vector = segs[1:]
641 | num_lines += 1
642 | if word in word_dict:
643 | word_embedding_vectors[word_dict[word]] = vector
644 | num_got_vec += 1
645 | if num_got_vec % 1000 == 0:
646 | print('### 已读取 %d 个词向量, 已生成 %d 个词向量' % (num_lines, num_got_vec))
647 |
648 | path, cache_name, _ = fu.get_file_info(vector_file)
649 | with open(os.path.join(path, cache_name + '.pkl'), 'wb') as f:
650 | pickle.dump(word_embedding_vectors, f)
651 |
652 | print('########### 原词表的词数为%d 加载了的向量的词数为:%d #########' % (len(word_dict), num_got_vec))
653 |
654 | return word_embedding_vectors
655 |
656 |
657 | def average_sequence_length(sequences):
658 | """
659 | 序列的每个元素为一个数组,此方法用来得到序列中的数组的平均长度
660 | :param sequences: 数组的序列
661 | :return: 平均长度
662 | """
663 | # print('Average train sequence length: {}'.format( dtype=int)))
664 | return np.mean(list(map(len, sequences)))
665 |
666 |
667 | def train_word_embedding_vectors(corpus, emb_dim):
668 | """
669 | 从训练语料中得到词向量
670 | :param corpus: 语料对象
671 | :param emb_dim: 词向量的维数
672 | :return: 词向量数组
673 | """
674 | cpu_count = multiprocessing.cpu_count() # 4
675 | n_exposures = 5 # 所有频数超过10的词语
676 | window_size = 15
677 | # n_iterations = 1 # ideally more..
678 | # n_epoch = 4
679 | # input_length = 100
680 | # maxlen = 100
681 |
682 | sentences = corpus.data
683 | text_array = [list(map(lambda x: str(x), item)) for item in sentences]
684 |
685 | model = Word2Vec(text_array, size=emb_dim, window=window_size, min_count=n_exposures, workers=cpu_count)
686 | # 初始化 索引为0的词语,词向量全为0
687 | word_embedding_vectors = np.zeros((len(corpus.word_dict), emb_dim))
688 | for index in model.vocab.keys():
689 | word_embedding_vectors[int(index)] = model[index]
690 |
691 | return word_embedding_vectors
692 |
693 |
694 |
695 |
696 |
697 |
698 |
--------------------------------------------------------------------------------
/data/dict/stopwords.txt:
--------------------------------------------------------------------------------
1 | !
2 | "
3 | #
4 | $
5 | %
6 | &
7 |  
8 |
9 | '
10 | (
11 | )
12 | *
13 | +
14 | ,
15 | -
16 | --
17 | .
18 | ..
19 | ...
20 | ......
21 | ...................
22 | ./
23 | .一
24 | .数
25 | .日
26 | /
27 | //
28 | 0
29 | 2
30 | 3
31 | 4
32 | 5
33 | 6
34 | 7
35 | 8
36 | 9
37 | :
38 | ://
39 | ::
40 | ;
41 | <
42 | =
43 | >
44 | >>
45 | ?
46 | @
47 | A
48 | Lex
49 | [
50 | \
51 | ]
52 | ^
53 | _
54 | `
55 | a
56 | aboard
57 | about
58 | above
59 | according
60 | accordingto
61 | across
62 | afore
63 | after
64 | afterwards
65 | again
66 | against
67 | agin
68 | all
69 | almost
70 | alone
71 | along
72 | alongside
73 | already
74 | also
75 | although
76 | always
77 | am
78 | amid
79 | amidst
80 | among
81 | amongst
82 | amoungst
83 | amount
84 | an
85 | and
86 | anent
87 | another
88 | any
89 | anyhow
90 | anyone
91 | anything
92 | anyway
93 | anywhere
94 | approximately
95 | are
96 | around
97 | as
98 | asked
99 | aslant
100 | astride
101 | at
102 | athwart
103 | back
104 | bar
105 | be
106 | became
107 | because
108 | becauseof
109 | become
110 | becomes
111 | becoming
112 | been
113 | before
114 | beforehand
115 | behind
116 | being
117 | below
118 | beneath
119 | beside
120 | besides
121 | between
122 | betwixt
123 | beyond
124 | bill
125 | both
126 | bottom
127 | but
128 | by
129 | call
130 | called
131 | can
132 | cannot
133 | cant
134 | circa
135 | co
136 | computer
137 | con
138 | could
139 | couldnt
140 | cry
141 | currently
142 | dare
143 | de
144 | describe
145 | despite
146 | detail
147 | did
148 | do
149 | does
150 | done
151 | down
152 | dr
153 | due
154 | dueto
155 | during
156 | e.g.,
157 | each
158 | earlier
159 | eg
160 | eight
161 | either
162 | eleven
163 | else
164 | elsewhere
165 | empty
166 | enough
167 | ere
168 | etc
169 | even
170 | eventually
171 | ever
172 | every
173 | everyone
174 | everything
175 | everywhere
176 | except
177 | exp
178 | few
179 | fifteen
180 | fify
181 | fill
182 | find
183 | fire
184 | first
185 | five
186 | for
187 | former
188 | formerly
189 | forty
190 | found
191 | four
192 | from
193 | front
194 | full
195 | further
196 | get
197 | give
198 | go
199 | had
200 | has
201 | hasnt
202 | have
203 | he
204 | hence
205 | her
206 | here
207 | hereafter
208 | hereby
209 | herein
210 | hereupon
211 | hers
212 | herself
213 | him
214 | himself
215 | his
216 | how
217 | however
218 | hundred
219 | i
220 | ie
221 | if
222 | in
223 | inc
224 | indeed
225 | inside
226 | instead
227 | interest
228 | into
229 | is
230 | it
231 | its
232 | itself
233 | just
234 | keep
235 | last
236 | latter
237 | latterly
238 | least
239 | less
240 | like
241 | ltd
242 | made
243 | major
244 | many
245 | may
246 | maybe
247 | me
248 | meanwhile
249 | mid
250 | midst
251 | might
252 | mill
253 | mine
254 | minus
255 | more
256 | moreover
257 | most
258 | mostly
259 | move
260 | mr
261 | mrs
262 | ms
263 | much
264 | must
265 | my
266 | myself
267 | name
268 | namely
269 | near
270 | need
271 | neither
272 | net
273 | never
274 | nevertheless
275 | next
276 | nigh
277 | nigher
278 | nighest
279 | nine
280 | no
281 | nobody
282 | none
283 | noone
284 | nor
285 | not
286 | nothing
287 | notwithstanding
288 | now
289 | nowhere
290 | of
291 | off
292 | often
293 | on
294 | once
295 | one
296 | only
297 | onto
298 | or
299 | other
300 | others
301 | otherwise
302 | ought
303 | our
304 | ours
305 | ourselves
306 | out
307 | outof
308 | outside
309 | over
310 | own
311 | part
312 | partly
313 | past
314 | pending
315 | per
316 | perhaps
317 | please
318 | plus
319 | prior
320 | put
321 | qua
322 | rather
323 | re
324 | regarding
325 | round
326 | same
327 | sans
328 | save
329 | see
330 | seem
331 | seemed
332 | seeming
333 | seems
334 | separately
335 | serious
336 | seven
337 | several
338 | shall
339 | she
340 | should
341 | show
342 | side
343 | similarly
344 | since
345 | sincere
346 | six
347 | sixty
348 | so
349 | some
350 | somehow
351 | someone
352 | something
353 | sometime
354 | sometimes
355 | somewhere
356 | still
357 | sub
358 | such
359 | sup
360 | system
361 | take
362 | ten
363 | than
364 | that
365 | the
366 | their
367 | theirs
368 | them
369 | themselves
370 | then
371 | thence
372 | there
373 | thereafter
374 | thereby
375 | therefore
376 | therein
377 | thereupon
378 | these
379 | they
380 | thick
381 | thin
382 | third
383 | this
384 | those
385 | though
386 | three
387 | through
388 | throughout
389 | thru
390 | thus
391 | till
392 | to
393 | together
394 | too
395 | top
396 | toward
397 | towards
398 | twelve
399 | twenty
400 | two
401 | un
402 | under
403 | underneath
404 | unless
405 | unlike
406 | until
407 | unto
408 | up
409 | upon
410 | us
411 | versus
412 | very
413 | via
414 | vice
415 | volume
416 | was
417 | we
418 | well
419 | were
420 | what
421 | whatever
422 | whats
423 | when
424 | whence
425 | whenever
426 | where
427 | whereafter
428 | whereas
429 | whereby
430 | wherein
431 | whereupon
432 | wherever
433 | whether
434 | which
435 | while
436 | whither
437 | who
438 | whoever
439 | whole
440 | whom
441 | whose
442 | why
443 | will
444 | with
445 | within
446 | without
447 | would
448 | yesterday
449 | yet
450 | you
451 | your
452 | yours
453 | yourself
454 | yourselves
455 | {
456 | |
457 | }
458 | ~
459 | ~~~~
460 | ¡
461 | ¦
462 | ¨
463 | «
464 |
465 | ¯
466 | ´
467 | ·
468 | ¸
469 | »
470 | ¿
471 | ×
472 | ×××
473 | ˇ
474 | ˉ
475 | ˊ
476 | ˋ
477 | ˜
478 | Δ
479 | Ψ
480 | γ
481 | μ
482 | φ
483 | В
484 | ‐
485 | —
486 | ―
487 | ‖
488 | ‘
489 | ’
490 | “
491 | ”
492 | •
493 | …
494 | ‹
495 | ›
496 | ℃
497 | Ⅲ
498 | ↑
499 | →
500 | ∕
501 | ∶
502 | ≈
503 | ①
504 | ②
505 | ③
506 | ④
507 | ⑤
508 | ⑥
509 | ⑦
510 | ⑧
511 | ⑨
512 | ⑩
513 | ■
514 | ▲
515 |
516 | 、
517 | 。
518 | 〃
519 | 々
520 | 〈
521 | 〉
522 | 《
523 | 》
524 | 「
525 | 」
526 | 『
527 | 』
528 | 【
529 | 】
530 | 〔
531 | 〕
532 | 〖
533 | 〗
534 | 〝
535 | 〞
536 | ㈧
537 | 一
538 | 七
539 | 万
540 | 三
541 | 上
542 | 下
543 | 不
544 | 与
545 | 且
546 | 两
547 | 个
548 | 中
549 | 临
550 | 为
551 | 乃
552 | 么
553 | 之
554 | 乎
555 | 乒
556 | 乘
557 | 九
558 | 也
559 | 买
560 | 了
561 | 事
562 | 二
563 | 于
564 | 互
565 | 五
566 | 些
567 | 亦
568 | 人
569 | 仅
570 | 今
571 | 仍
572 | 从
573 | 他
574 | 令
575 | 以
576 | 们
577 | 件
578 | 任
579 | 会
580 | 传
581 | 但
582 | 位
583 | 住
584 | 何
585 | 你
586 | 使
587 | 依
588 | 便
589 | 俩
590 | 俺
591 | 倆
592 | 倘
593 | 借
594 | 做
595 | 像
596 | 儿
597 | 先
598 | 光
599 | 全
600 | 八
601 | 六
602 | 兮
603 | 共
604 | 其
605 | 内
606 | 再
607 | 冒
608 | 写
609 | 冲
610 | 夜
611 | 华
612 | 几
613 | 凡
614 | 凭
615 | 出
616 | 分
617 | 切
618 | 则
619 | 刚
620 | 初
621 | 别
622 | 到
623 | 前
624 | 加
625 | 十
626 | 千
627 | 半
628 | 单
629 | 即
630 | 却
631 | 历
632 | 去
633 | 又
634 | 及
635 | 发
636 | 受
637 | 变
638 | 句
639 | 另
640 | 只
641 | 叫
642 | 可
643 | 号
644 | 吃
645 | 各
646 | 同
647 | 名
648 | 后
649 | 向
650 | 吓
651 | 吗
652 | 吧
653 | 听
654 | 吱
655 | 呀
656 | 呃
657 | 呐
658 | 呕
659 | 呗
660 | 呜
661 | 呢
662 | 呵
663 | 呸
664 | 咋
665 | 和
666 | 咚
667 | 咦
668 | 咧
669 | 咱
670 | 咳
671 | 哇
672 | 哈
673 | 哉
674 | 哎
675 | 哗
676 | 哟
677 | 哦
678 | 哩
679 | 哪
680 | 哼
681 | 唉
682 | 啊
683 | 啐
684 | 啥
685 | 啦
686 | 喀
687 | 喂
688 | 喏
689 | 喽
690 | 嗡
691 | 嗬
692 | 嗯
693 | 嗳
694 | 嘎
695 | 嘘
696 | 嘛
697 | 嘻
698 | 嘿
699 | 四
700 | 回
701 | 因
702 | 固
703 | 在
704 | 地
705 | 场
706 | 均
707 | 多
708 | 大
709 | 天
710 | 太
711 | 头
712 | 奇
713 | 奈
714 | 她
715 | 好
716 | 如
717 | 字
718 | 宁
719 | 它
720 | 完
721 | 定
722 | 家
723 | 对
724 | 将
725 | 小
726 | 少
727 | 尔
728 | 就
729 | 尽
730 | 屡
731 | 岁
732 | 岂
733 | 己
734 | 已
735 | 巴
736 | 市
737 | 帖
738 | 带
739 | 帮
740 | 常
741 | 年
742 | 并
743 | 开
744 | 弗
745 | 张
746 | 强
747 | 归
748 | 当
749 | 彼
750 | 往
751 | 待
752 | 很
753 | 得
754 | 心
755 | 必
756 | 快
757 | 怎
758 | 怕
759 | 怪
760 | 总
761 | 您
762 | 情
763 | 想
764 | 懂
765 | 成
766 | 我
767 | 或
768 | 所
769 | 手
770 | 才
771 | 打
772 | 找
773 | 把
774 | 拿
775 | 按
776 | 据
777 | 放
778 | 故
779 | 敢
780 | 方
781 | 无
782 | 既
783 | 时
784 | 是
785 | 更
786 | 曾
787 | 替
788 | 最
789 | 有
790 | 望
791 | 朝
792 | 未
793 | 本
794 | 条
795 | 来
796 | 极
797 | 某
798 | 梆
799 | 概
800 | 次
801 | 欤
802 | 此
803 | 殆
804 | 段
805 | 每
806 | 比
807 | 水
808 | 求
809 | 汝
810 | 没
811 | 沿
812 | 活
813 | 满
814 | 点
815 | 焉
816 | 然
817 | 照
818 | 片
819 | 独
820 | 生
821 | 用
822 | 甫
823 | 甭
824 | 由
825 | 略
826 | 白
827 | 的
828 | 看
829 | 着
830 | 矣
831 | 砰
832 | 离
833 | 种
834 | 称
835 | 穿
836 | 窃
837 | 立
838 | 站
839 | 竟
840 | 第
841 | 等
842 | 算
843 | 管
844 | 粗
845 | 纯
846 | 纵
847 | 经
848 | 给
849 | 绝
850 | 老
851 | 者
852 | 而
853 | 能
854 | 腾
855 | 自
856 | 臭
857 | 至
858 | 致
859 | 若
860 | 莫
861 | 虽
862 | 蛮
863 | 行
864 | 被
865 | 要
866 | 见
867 | 让
868 | 讲
869 | 论
870 | 话
871 | 该
872 | 说
873 | 请
874 | 诸
875 | 谁
876 | 谨
877 | 走
878 | 赶
879 | 起
880 | 趁
881 | 越
882 | 距
883 | 跟
884 | 路
885 | 车
886 | 较
887 | 边
888 | 迄
889 | 过
890 | 近
891 | 还
892 | 这
893 | 进
894 | 连
895 | 送
896 | 逢
897 | 那
898 | 部
899 | 都
900 | 里
901 | 钱
902 | 长
903 | 问
904 | 阿
905 | 除
906 | 随
907 | 集
908 | 零
909 | 靠
910 | 顷
911 | 顺
912 | 颇
913 | 饱
914 | 首
915 | 齐
916 | ︰
917 | ︳
918 | ︴
919 | ︵
920 | ︶
921 | ︷
922 | ︸
923 | ︹
924 | ︺
925 | ︻
926 | ︼
927 | ︽
928 | ︾
929 | ︿
930 | ﹀
931 | ﹁
932 | ﹂
933 | ﹃
934 | ﹄
935 | ﹉
936 | ﹊
937 | ﹋
938 | ﹌
939 | ﹍
940 | ﹎
941 | ﹏
942 | ﹐
943 | ﹑
944 | ﹔
945 | ﹕
946 | ﹖
947 | ﹝
948 | ﹞
949 | ﹟
950 | ﹠
951 | ﹡
952 | ﹢
953 | ﹤
954 | ﹦
955 | ﹨
956 | ﹩
957 | ﹪
958 | ﹫
959 | !
960 | "
961 | #
962 | $
963 | %
964 | &
965 | '
966 | (
967 | )
968 | *
969 | +
970 | ,
971 | -
972 | .
973 | /
974 | 0
975 | 1
976 | 2
977 | 3
978 | 4
979 | 5
980 | 6
981 | 7
982 | 8
983 | 9
984 | :
985 | ;
986 | <
987 | =
988 | >
989 | ?
990 | @
991 | A
992 | [
993 | ]
994 | _
995 | `
996 | {
997 | |
998 | }
999 | ~
1000 |  ̄
1001 | ¥
1002 | 末##末
1003 | 一.
1004 | 既...又
1005 | 数/
1006 | <±
1007 | ~±
1008 | )÷(1-
1009 | φ.
1010 | ——
1011 | —
1012 | ’‘
1013 | ”,
1014 | ……
1015 | ′∈
1016 | ′|
1017 | ∈[
1018 | ②c
1019 | ③]
1020 | ──
1021 | 〕〔
1022 | 一一
1023 | 一下
1024 | 一个
1025 | 一些
1026 | 一何
1027 | 一切
1028 | 一则
1029 | 一天
1030 | 一定
1031 | 一旦
1032 | 一时
1033 | 一来
1034 | 一样
1035 | 一次
1036 | 一点
1037 | 一片
1038 | 一番
1039 | 一直
1040 | 一致
1041 | 一般
1042 | 一起
1043 | 一边
1044 | 一面
1045 | 万一
1046 | 上下
1047 | 上升
1048 | 上去
1049 | 上来
1050 | 上的
1051 | 上述
1052 | 上面
1053 | 下列
1054 | 下去
1055 | 下来
1056 | 下面
1057 | 不一
1058 | 不下
1059 | 不久
1060 | 不了
1061 | 不仅
1062 | 不会
1063 | 不但
1064 | 不光
1065 | 不免
1066 | 不再
1067 | 不力
1068 | 不单
1069 | 不变
1070 | 不只
1071 | 不可
1072 | 不同
1073 | 不外
1074 | 不够
1075 | 不大
1076 | 不如
1077 | 不妨
1078 | 不定
1079 | 不对
1080 | 不少
1081 | 不尽
1082 | 不巧
1083 | 不已
1084 | 不常
1085 | 不得
1086 | 不必
1087 | 不怕
1088 | 不惟
1089 | 不成
1090 | 不拘
1091 | 不敢
1092 | 不料
1093 | 不断
1094 | 不日
1095 | 不时
1096 | 不是
1097 | 不曾
1098 | 不止
1099 | 不比
1100 | 不消
1101 | 不满
1102 | 不然
1103 | 不特
1104 | 不独
1105 | 不管
1106 | 不胜
1107 | 不能
1108 | 不若
1109 | 不要
1110 | 不论
1111 | 不起
1112 | 不足
1113 | 不过
1114 | 不迭
1115 | 不问
1116 | 不限
1117 | 与其
1118 | 与否
1119 | 专门
1120 | 且说
1121 | 东西
1122 | 两者
1123 | 严格
1124 | 严重
1125 | 个人
1126 | 个别
1127 | 中小
1128 | 中间
1129 | 丰富
1130 | 串行
1131 | 临到
1132 | 为主
1133 | 为了
1134 | 为何
1135 | 为止
1136 | 为此
1137 | 为着
1138 | 主张
1139 | 主要
1140 | 举凡
1141 | 举行
1142 | 乃至
1143 | 之一
1144 | 之前
1145 | 之后
1146 | 之後
1147 | 之类
1148 | 乌乎
1149 | 乘势
1150 | 乘机
1151 | 乘胜
1152 | 乘虚
1153 | 乘隙
1154 | 也好
1155 | 也是
1156 | 也罢
1157 | 了解
1158 | 争取
1159 | 二来
1160 | 于是
1161 | 云云
1162 | 云尔
1163 | 互相
1164 | 交口
1165 | 产生
1166 | 亲口
1167 | 亲手
1168 | 亲眼
1169 | 亲自
1170 | 亲身
1171 | 人人
1172 | 人们
1173 | 人家
1174 | 人民
1175 | 什么
1176 | 什麽
1177 | 仅仅
1178 | 今后
1179 | 今天
1180 | 今年
1181 | 今後
1182 | 介于
1183 | 仍旧
1184 | 仍然
1185 | 从不
1186 | 从严
1187 | 从中
1188 | 从事
1189 | 从优
1190 | 从头
1191 | 从宽
1192 | 从小
1193 | 从新
1194 | 从未
1195 | 从来
1196 | 从此
1197 | 从而
1198 | 从轻
1199 | 从速
1200 | 从重
1201 | 他人
1202 | 他们
1203 | 他俩
1204 | 他是
1205 | 他的
1206 | 代替
1207 | 以上
1208 | 以下
1209 | 以为
1210 | 以便
1211 | 以免
1212 | 以前
1213 | 以及
1214 | 以后
1215 | 以外
1216 | 以後
1217 | 以故
1218 | 以期
1219 | 以来
1220 | 以至
1221 | 以致
1222 | 任何
1223 | 任凭
1224 | 任务
1225 | 企图
1226 | 伙同
1227 | 伟大
1228 | 传说
1229 | 传闻
1230 | 似乎
1231 | 似的
1232 | 但凡
1233 | 但愿
1234 | 但是
1235 | 何以
1236 | 何况
1237 | 何处
1238 | 何妨
1239 | 何尝
1240 | 何必
1241 | 何时
1242 | 何止
1243 | 何苦
1244 | 何须
1245 | 余外
1246 | 作为
1247 | 你们
1248 | 你俩
1249 | 你是
1250 | 你的
1251 | 使得
1252 | 使用
1253 | 例如
1254 | 依据
1255 | 依照
1256 | 依靠
1257 | 便于
1258 | 促进
1259 | 保持
1260 | 保管
1261 | 保险
1262 | 俺们
1263 | 倍加
1264 | 倍感
1265 | 倒是
1266 | 倘使
1267 | 倘或
1268 | 倘然
1269 | 倘若
1270 | 借以
1271 | 借此
1272 | 假使
1273 | 假如
1274 | 假若
1275 | 偏偏
1276 | 做到
1277 | 偶尔
1278 | 偶而
1279 | 傥然
1280 | 允许
1281 | 充分
1282 | 先后
1283 | 先後
1284 | 先生
1285 | 光是
1286 | 全体
1287 | 全力
1288 | 全年
1289 | 全然
1290 | 全部
1291 | 全都
1292 | 全面
1293 | 八成
1294 | 公然
1295 | 共同
1296 | 共总
1297 | 关于
1298 | 其一
1299 | 其中
1300 | 其二
1301 | 其他
1302 | 其余
1303 | 其后
1304 | 其它
1305 | 其实
1306 | 其次
1307 | 具体
1308 | 具有
1309 | 兼之
1310 | 再则
1311 | 再有
1312 | 再次
1313 | 再者
1314 | 再说
1315 | 决不
1316 | 决定
1317 | 决非
1318 | 况且
1319 | 准备
1320 | 凑巧
1321 | 凝神
1322 | 几乎
1323 | 几度
1324 | 几时
1325 | 几番
1326 | 几经
1327 | 凡是
1328 | 凭借
1329 | 出于
1330 | 出去
1331 | 出来
1332 | 出现
1333 | 分别
1334 | 分头
1335 | 分期
1336 | 切切
1337 | 切勿
1338 | 切莫
1339 | 则甚
1340 | 刚好
1341 | 刚巧
1342 | 刚才
1343 | 别人
1344 | 别处
1345 | 别是
1346 | 别的
1347 | 别管
1348 | 别说
1349 | 到处
1350 | 到头
1351 | 到底
1352 | 前后
1353 | 前此
1354 | 前者
1355 | 前进
1356 | 前面
1357 | 加上
1358 | 加之
1359 | 加以
1360 | 加入
1361 | 加强
1362 | 动辄
1363 | 勃然
1364 | 匆匆
1365 | 十分
1366 | 千万
1367 | 单单
1368 | 单纯
1369 | 即令
1370 | 即使
1371 | 即便
1372 | 即刻
1373 | 即如
1374 | 即将
1375 | 即或
1376 | 即若
1377 | 却不
1378 | 原来
1379 | 又及
1380 | 及其
1381 | 及时
1382 | 及至
1383 | 双方
1384 | 反之
1385 | 反倒
1386 | 反应
1387 | 反手
1388 | 反映
1389 | 反而
1390 | 发生
1391 | 取得
1392 | 取道
1393 | 受到
1394 | 变成
1395 | 古来
1396 | 另外
1397 | 另悉
1398 | 另行
1399 | 只当
1400 | 只怕
1401 | 只是
1402 | 只有
1403 | 只消
1404 | 只能
1405 | 只要
1406 | 只限
1407 | 叫做
1408 | 召开
1409 | 叮咚
1410 | 叮当
1411 | 可以
1412 | 可好
1413 | 可是
1414 | 可能
1415 | 可见
1416 | 各个
1417 | 各人
1418 | 各位
1419 | 各地
1420 | 各式
1421 | 各种
1422 | 各级
1423 | 各自
1424 | 合理
1425 | 同一
1426 | 同时
1427 | 同样
1428 | 后来
1429 | 后者
1430 | 后面
1431 | 向使
1432 | 向着
1433 | 否则
1434 | 吧哒
1435 | 告诉
1436 | 呜呼
1437 | 周围
1438 | 呵呵
1439 | 呼哧
1440 | 呼啦
1441 | 咱们
1442 | 哈哈
1443 | 哎呀
1444 | 哎哟
1445 | 哗啦
1446 | 哪个
1447 | 哪些
1448 | 哪儿
1449 | 哪天
1450 | 哪年
1451 | 哪怕
1452 | 哪样
1453 | 哪边
1454 | 哪里
1455 | 哼唷
1456 | 唯有
1457 | 啊呀
1458 | 啊哈
1459 | 啊哟
1460 | 啪达
1461 | 啷当
1462 | 喔唷
1463 | 嗡嗡
1464 | 嘎嘎
1465 | 嘎登
1466 | 嘿嘿
1467 | 因为
1468 | 因了
1469 | 因此
1470 | 因着
1471 | 因而
1472 | 固然
1473 | 在下
1474 | 在于
1475 | 地方
1476 | 坚决
1477 | 坚持
1478 | 基于
1479 | 基本
1480 | 处在
1481 | 处处
1482 | 处理
1483 | 复杂
1484 | 多么
1485 | 多亏
1486 | 多多
1487 | 多少
1488 | 多数
1489 | 多次
1490 | 大举
1491 | 大事
1492 | 大体
1493 | 大凡
1494 | 大力
1495 | 大多
1496 | 大大
1497 | 大家
1498 | 大批
1499 | 大抵
1500 | 大概
1501 | 大略
1502 | 大约
1503 | 大致
1504 | 大都
1505 | 大量
1506 | 失去
1507 | 奋勇
1508 | 她们
1509 | 她俩
1510 | 她是
1511 | 她的
1512 | 好像
1513 | 好在
1514 | 好的
1515 | 好象
1516 | 如上
1517 | 如下
1518 | 如今
1519 | 如何
1520 | 如其
1521 | 如同
1522 | 如常
1523 | 如是
1524 | 如期
1525 | 如果
1526 | 如次
1527 | 如此
1528 | 如若
1529 | 始而
1530 | 姑且
1531 | 存在
1532 | 存心
1533 | 孰料
1534 | 孰知
1535 | 宁可
1536 | 宁愿
1537 | 宁肯
1538 | 它们
1539 | 它是
1540 | 它的
1541 | 安全
1542 | 完全
1543 | 完成
1544 | 实现
1545 | 实际
1546 | 宣布
1547 | 容易
1548 | 密切
1549 | 对于
1550 | 对应
1551 | 对待
1552 | 对方
1553 | 对比
1554 | 将才
1555 | 将要
1556 | 将近
1557 | 少数
1558 | 尔后
1559 | 尔尔
1560 | 尔等
1561 | 尚且
1562 | 尤其
1563 | 就地
1564 | 就是
1565 | 就此
1566 | 就算
1567 | 就要
1568 | 尽快
1569 | 尽早
1570 | 尽然
1571 | 尽管
1572 | 尽量
1573 | 局外
1574 | 居然
1575 | 届时
1576 | 属于
1577 | 屡屡
1578 | 屡次
1579 | 岂但
1580 | 岂止
1581 | 岂非
1582 | 左右
1583 | 巨大
1584 | 巩固
1585 | 已矣
1586 | 已经
1587 | 巴巴
1588 | 帮助
1589 | 常常
1590 | 平素
1591 | 并不
1592 | 并且
1593 | 并排
1594 | 并无
1595 | 并没
1596 | 并肩
1597 | 并非
1598 | 广大
1599 | 广泛
1600 | 应当
1601 | 应用
1602 | 应该
1603 | 庶乎
1604 | 庶几
1605 | 开外
1606 | 开始
1607 | 开展
1608 | 引起
1609 | 强烈
1610 | 强调
1611 | 归齐
1612 | 当下
1613 | 当中
1614 | 当儿
1615 | 当前
1616 | 当即
1617 | 当地
1618 | 当场
1619 | 当头
1620 | 当庭
1621 | 当时
1622 | 当然
1623 | 当真
1624 | 当着
1625 | 形成
1626 | 彻夜
1627 | 彻底
1628 | 彼时
1629 | 彼此
1630 | 往往
1631 | 待到
1632 | 很多
1633 | 很少
1634 | 後来
1635 | 後面
1636 | 得了
1637 | 得出
1638 | 得到
1639 | 得起
1640 | 心里
1641 | 必定
1642 | 必将
1643 | 必然
1644 | 必要
1645 | 必须
1646 | 快要
1647 | 忽地
1648 | 忽然
1649 | 怎么
1650 | 怎奈
1651 | 怎样
1652 | 怎麽
1653 | 总之
1654 | 总是
1655 | 总结
1656 | 恍然
1657 | 恐怕
1658 | 恰似
1659 | 恰好
1660 | 恰如
1661 | 恰巧
1662 | 恰恰
1663 | 恰逢
1664 | 您们
1665 | 您是
1666 | 情况
1667 | 惟其
1668 | 惯常
1669 | 意思
1670 | 愤然
1671 | 愿意
1672 | 慢说
1673 | 成为
1674 | 成年
1675 | 成心
1676 | 我们
1677 | 我俩
1678 | 我是
1679 | 我的
1680 | 或则
1681 | 或是
1682 | 或曰
1683 | 或者
1684 | 或许
1685 | 战斗
1686 | 截然
1687 | 截至
1688 | 所以
1689 | 所在
1690 | 所幸
1691 | 所有
1692 | 所谓
1693 | 才能
1694 | 扑通
1695 | 打从
1696 | 扩大
1697 | 抑或
1698 | 拦腰
1699 | 按时
1700 | 按期
1701 | 按照
1702 | 按理
1703 | 按说
1704 | 挨个
1705 | 挨次
1706 | 挨着
1707 | 据实
1708 | 据悉
1709 | 据此
1710 | 据称
1711 | 据说
1712 | 掌握
1713 | 接着
1714 | 接著
1715 | 放量
1716 | 故意
1717 | 故此
1718 | 故而
1719 | 敢于
1720 | 敢情
1721 | 整个
1722 | 断然
1723 | 方便
1724 | 方才
1725 | 方能
1726 | 方面
1727 | 旁人
1728 | 无宁
1729 | 无法
1730 | 无论
1731 | 既往
1732 | 既是
1733 | 既然
1734 | 日渐
1735 | 日益
1736 | 日臻
1737 | 日见
1738 | 时候
1739 | 昂然
1740 | 明显
1741 | 明确
1742 | 是以
1743 | 是否
1744 | 是的
1745 | 显然
1746 | 显著
1747 | 普通
1748 | 普遍
1749 | 暗中
1750 | 暗自
1751 | 更为
1752 | 更加
1753 | 曾经
1754 | 替代
1755 | 最后
1756 | 最大
1757 | 最好
1758 | 最後
1759 | 最近
1760 | 最高
1761 | 有些
1762 | 有人
1763 | 有关
1764 | 有利
1765 | 有力
1766 | 有及
1767 | 有所
1768 | 有效
1769 | 有时
1770 | 有点
1771 | 有的
1772 | 有着
1773 | 有著
1774 | 朝着
1775 | 本人
1776 | 本地
1777 | 本着
1778 | 本身
1779 | 权时
1780 | 来看
1781 | 来着
1782 | 来自
1783 | 来讲
1784 | 来说
1785 | 极为
1786 | 极了
1787 | 极其
1788 | 极力
1789 | 极大
1790 | 极度
1791 | 极端
1792 | 构成
1793 | 果然
1794 | 果真
1795 | 某个
1796 | 某些
1797 | 某某
1798 | 根据
1799 | 根本
1800 | 格外
1801 | 次第
1802 | 欢迎
1803 | 正值
1804 | 正在
1805 | 正如
1806 | 正巧
1807 | 正常
1808 | 正是
1809 | 此中
1810 | 此后
1811 | 此地
1812 | 此处
1813 | 此外
1814 | 此时
1815 | 此次
1816 | 此间
1817 | 毋宁
1818 | 每个
1819 | 每天
1820 | 每年
1821 | 每当
1822 | 每每
1823 | 每逢
1824 | 比及
1825 | 比如
1826 | 比方
1827 | 比照
1828 | 比起
1829 | 比较
1830 | 毕竟
1831 | 毫不
1832 | 毫无
1833 | 永远
1834 | 沙沙
1835 | 没有
1836 | 沿着
1837 | 注意
1838 | 深入
1839 | 清楚
1840 | 满足
1841 | 漫说
1842 | 然则
1843 | 然后
1844 | 然後
1845 | 然而
1846 | 照着
1847 | 牢牢
1848 | 特别
1849 | 特殊
1850 | 特点
1851 | 犹且
1852 | 犹自
1853 | 独自
1854 | 猛然
1855 | 率尔
1856 | 率然
1857 | 现代
1858 | 现在
1859 | 理应
1860 | 理当
1861 | 理该
1862 | 瑟瑟
1863 | 甚且
1864 | 甚么
1865 | 甚或
1866 | 甚而
1867 | 甚至
1868 | 用来
1869 | 由于
1870 | 由是
1871 | 由此
1872 | 略为
1873 | 略加
1874 | 略微
1875 | 白白
1876 | 的是
1877 | 的确
1878 | 的话
1879 | 皆可
1880 | 目前
1881 | 直到
1882 | 直接
1883 | 相似
1884 | 相信
1885 | 相反
1886 | 相同
1887 | 相对
1888 | 相应
1889 | 相当
1890 | 相等
1891 | 省得
1892 | 看出
1893 | 看到
1894 | 看来
1895 | 看看
1896 | 看见
1897 | 真是
1898 | 真正
1899 | 真的
1900 | 眨眼
1901 | 着呢
1902 | 矣乎
1903 | 矣哉
1904 | 知道
1905 | 确定
1906 | 碰巧
1907 | 积极
1908 | 移动
1909 | 究竟
1910 | 突出
1911 | 突然
1912 | 立刻
1913 | 立即
1914 | 立地
1915 | 立时
1916 | 立马
1917 | 竟然
1918 | 竟而
1919 | 第二
1920 | 等到
1921 | 等等
1922 | 简直
1923 | 类如
1924 | 精光
1925 | 累年
1926 | 累次
1927 | 纯粹
1928 | 纵令
1929 | 纵使
1930 | 纵然
1931 | 练习
1932 | 组成
1933 | 终于
1934 | 经常
1935 | 经过
1936 | 结合
1937 | 结果
1938 | 绝不
1939 | 绝对
1940 | 绝非
1941 | 绝顶
1942 | 继之
1943 | 继后
1944 | 继续
1945 | 继而
1946 | 维持
1947 | 缕缕
1948 | 罢了
1949 | 老大
1950 | 老是
1951 | 考虑
1952 | 而且
1953 | 而况
1954 | 而又
1955 | 而后
1956 | 而外
1957 | 而已
1958 | 而是
1959 | 而言
1960 | 而论
1961 | 联系
1962 | 联袂
1963 | 能否
1964 | 能够
1965 | 自从
1966 | 自后
1967 | 自家
1968 | 自己
1969 | 自打
1970 | 自身
1971 | 至于
1972 | 至今
1973 | 至若
1974 | 般的
1975 | 良好
1976 | 若夫
1977 | 若是
1978 | 若果
1979 | 若非
1980 | 范围
1981 | 莫不
1982 | 莫如
1983 | 莫若
1984 | 莫非
1985 | 获得
1986 | 藉以
1987 | 虽则
1988 | 虽然
1989 | 虽说
1990 | 行为
1991 | 行动
1992 | 表明
1993 | 表示
1994 | 要不
1995 | 要么
1996 | 要是
1997 | 要求
1998 | 规定
1999 | 觉得
2000 | 譬喻
2001 | 譬如
2002 | 认为
2003 | 认真
2004 | 认识
2005 | 许多
2006 | 论说
2007 | 设使
2008 | 设或
2009 | 设若
2010 | 诚如
2011 | 诚然
2012 | 话说
2013 | 该当
2014 | 说明
2015 | 说来
2016 | 说说
2017 | 请勿
2018 | 诸位
2019 | 诸如
2020 | 谁人
2021 | 谁料
2022 | 谁知
2023 | 豁然
2024 | 贼死
2025 | 赖以
2026 | 赶快
2027 | 起先
2028 | 起初
2029 | 起头
2030 | 起来
2031 | 起见
2032 | 起首
2033 | 趁便
2034 | 趁势
2035 | 趁早
2036 | 趁机
2037 | 趁热
2038 | 趁着
2039 | 越是
2040 | 路经
2041 | 转动
2042 | 转变
2043 | 转贴
2044 | 轰然
2045 | 较为
2046 | 较之
2047 | 较比
2048 | 达到
2049 | 达旦
2050 | 迅速
2051 | 过于
2052 | 过去
2053 | 过来
2054 | 运用
2055 | 近来
2056 | 还是
2057 | 还有
2058 | 还要
2059 | 这个
2060 | 这么
2061 | 这些
2062 | 这儿
2063 | 这时
2064 | 这样
2065 | 这次
2066 | 这点
2067 | 这种
2068 | 这般
2069 | 这边
2070 | 这里
2071 | 这麽
2072 | 进入
2073 | 进去
2074 | 进来
2075 | 进步
2076 | 进而
2077 | 进行
2078 | 连同
2079 | 连声
2080 | 连日
2081 | 连袂
2082 | 连连
2083 | 迟早
2084 | 迫于
2085 | 适应
2086 | 适当
2087 | 适用
2088 | 逐步
2089 | 逐渐
2090 | 通常
2091 | 通过
2092 | 造成
2093 | 遇到
2094 | 遭到
2095 | 遵循
2096 | 遵照
2097 | 避免
2098 | 那个
2099 | 那么
2100 | 那些
2101 | 那儿
2102 | 那时
2103 | 那末
2104 | 那样
2105 | 那种
2106 | 那般
2107 | 那边
2108 | 那里
2109 | 那麽
2110 | 部分
2111 | 鄙人
2112 | 采取
2113 | 里面
2114 | 重大
2115 | 重新
2116 | 重要
2117 | 鉴于
2118 | 针对
2119 | 长线
2120 | 问题
2121 | 间或
2122 | 防止
2123 | 附近
2124 | 陈年
2125 | 限制
2126 | 陡然
2127 | 除了
2128 | 除却
2129 | 除去
2130 | 除外
2131 | 除开
2132 | 除此
2133 | 除非
2134 | 随后
2135 | 随时
2136 | 随着
2137 | 随著
2138 | 隔夜
2139 | 隔日
2140 | 难得
2141 | 难怪
2142 | 难说
2143 | 难道
2144 | 集中
2145 | 需要
2146 | 非但
2147 | 非常
2148 | 非徒
2149 | 非得
2150 | 非特
2151 | 非独
2152 | 顶多
2153 | 顷刻
2154 | 顺着
2155 | 顿时
2156 | 首先
2157 | 马上
2158 | 高低
2159 | 高兴
2160 | 默然
2161 | )、
2162 | +ξ
2163 | ++
2164 | ,也
2165 | -β
2166 | --
2167 | 1.
2168 | <Δ
2169 | <λ
2170 | <φ
2171 | <<
2172 | =″
2173 | =☆
2174 | =(
2175 | =-
2176 | =[
2177 | ={
2178 | >λ
2179 | LI
2180 | [②
2181 | [-
2182 | []
2183 | ][
2184 | a]
2185 | b]
2186 | c]
2187 | e]
2188 | f]
2189 | {-
2190 | }>
2191 | ~+
2192 | 不仅...而且
2193 | 不但...而且
2194 | ———
2195 | ∪φ∈
2196 | 》),
2197 | 一方面
2198 | 一转眼
2199 | 不仅仅
2200 | 不外乎
2201 | 不尽然
2202 | 不得不
2203 | 不得了
2204 | 不得已
2205 | 不怎么
2206 | 不由得
2207 | 不经意
2208 | 不能不
2209 | 不至于
2210 | 与其说
2211 | 且不说
2212 | 为什么
2213 | 为什麽
2214 | 乃至于
2215 | 之所以
2216 | 于是乎
2217 | 什么样
2218 | 他们俩
2219 | 以至于
2220 | 你们俩
2221 | 倒不如
2222 | 元/吨
2223 | 充其极
2224 | 充其量
2225 | 先不先
2226 | 全身心
2227 | 再其次
2228 | 再者说
2229 | 切不可
2230 | 到了儿
2231 | 到头来
2232 | 动不动
2233 | 即是说
2234 | 反之则
2235 | 反倒是
2236 | 反过来
2237 | 另一个
2238 | 另方面
2239 | 呆呆地
2240 | 基本上
2241 | 多年前
2242 | 多年来
2243 | 够瞧的
2244 | 大不了
2245 | 大体上
2246 | 大多数
2247 | 她们俩
2248 | 它们的
2249 | 就可以
2250 | 就是了
2251 | 就是说
2252 | 尽可能
2253 | 差一点
2254 | 差不多
2255 | 常言说
2256 | 常言道
2257 | 并不是
2258 | 并没有
2259 | 当口儿
2260 | 怎么办
2261 | 怎么样
2262 | 急匆匆
2263 | 怪不得
2264 | 我们俩
2265 | 抽冷子
2266 | 换言之
2267 | 接下来
2268 | 敞开儿
2269 | 是不是
2270 | 暗地里
2271 | 有的是
2272 | 来不及
2273 | 来得及
2274 | 比如说
2275 | 没奈何
2276 | 特别是
2277 | 猛然间
2278 | 甚至于
2279 | 看上去
2280 | 看样子
2281 | 看起来
2282 | 策略地
2283 | 简言之
2284 | 紧接着
2285 | 背地里
2286 | 背靠背
2287 | 自个儿
2288 | 自各儿
2289 | 莫不然
2290 | 要不是
2291 | 要不然
2292 | 近年来
2293 | 这一来
2294 | 这么些
2295 | 这么样
2296 | 这会儿
2297 | 连日来
2298 | 那么些
2299 | 那么样
2300 | 那会儿
2301 | 难道说
2302 | 顷刻间
2303 | 默默地
2304 | 0:2
2305 | 12%
2306 | 5:0
2307 | [①]
2308 | [②④
2309 | [②]
2310 | [③]
2311 | [④]
2312 | [⑤]
2313 | [⑥]
2314 | [⑦]
2315 | [⑧]
2316 | [⑨]
2317 | [⑩]
2318 | [*]
2319 | ng昉
2320 | 一则通过
2321 | 三天两头
2322 | 三番两次
2323 | 三番五次
2324 | 不亦乐乎
2325 | 不仅仅是
2326 | 不可开交
2327 | 不可抗拒
2328 | 不择手段
2329 | 不止一次
2330 | 不然的话
2331 | 不知不觉
2332 | 不管怎样
2333 | 与此同时
2334 | 也就是说
2335 | 二话不说
2336 | 二话没说
2337 | 从今以后
2338 | 从古到今
2339 | 从古至今
2340 | 从无到有
2341 | 从早到晚
2342 | 从此以后
2343 | 倒不如说
2344 | 具体地说
2345 | 具体来说
2346 | 具体说来
2347 | 分期分批
2348 | 千万千万
2349 | 反之亦然
2350 | 反过来说
2351 | 另一方面
2352 | 多多少少
2353 | 多多益善
2354 | 大张旗鼓
2355 | 大面儿上
2356 | 如上所述
2357 | 如前所述
2358 | 如此等等
2359 | 尽如人意
2360 | 尽心尽力
2361 | 尽心竭力
2362 | 尽管如此
2363 | 屡次三番
2364 | 川流不息
2365 | 年复一年
2366 | 弹指之间
2367 | 归根到底
2368 | 归根结底
2369 | 得天独厚
2370 | 总的来看
2371 | 总的来说
2372 | 总的说来
2373 | 总而言之
2374 | 恰恰相反
2375 | 成年累月
2376 | 或多或少
2377 | 挨家挨户
2378 | 挨门挨户
2379 | 挨门逐户
2380 | 换句话说
2381 | 据我所知
2382 | 接连不断
2383 | 日复一日
2384 | 更进一步
2385 | 每时每刻
2386 | 毫无例外
2387 | 由此可见
2388 | 相对而言
2389 | 社会主义
2390 | 穷年累月
2391 | 简而言之
2392 | 综上所述
2393 | 老老实实
2394 | 近几年来
2395 | 这么点儿
2396 | 这就是说
2397 | 长期以来
2398 | 长此下去
2399 | 长话短说
2400 | 除此之外
2401 | 除此以外
2402 | 除此而外
2403 | 顷刻之间
2404 | 风雨无阻
2405 | 2.3%
2406 | R.L.
2407 | [①①]
2408 | [①②]
2409 | [①③]
2410 | [①④]
2411 | [①⑤]
2412 | [①⑥]
2413 | [①⑦]
2414 | [①⑧]
2415 | [①⑨]
2416 | [①A]
2417 | [①B]
2418 | [①C]
2419 | [①D]
2420 | [①E]
2421 | [①a]
2422 | [①c]
2423 | [①d]
2424 | [①e]
2425 | [①f]
2426 | [①g]
2427 | [①h]
2428 | [①i]
2429 | [①o]
2430 | [②①]
2431 | [②②]
2432 | [②③]
2433 | [②⑤]
2434 | [②⑥]
2435 | [②⑦]
2436 | [②⑧]
2437 | [②⑩]
2438 | [②B]
2439 | [②G]
2440 | [②a]
2441 | [②b]
2442 | [②c]
2443 | [②d]
2444 | [②e]
2445 | [②f]
2446 | [②g]
2447 | [②h]
2448 | [②i]
2449 | [②j]
2450 | [③①]
2451 | [③⑩]
2452 | [③F]
2453 | [③a]
2454 | [③b]
2455 | [③c]
2456 | [③d]
2457 | [③e]
2458 | [③g]
2459 | [③h]
2460 | [④a]
2461 | [④b]
2462 | [④c]
2463 | [④d]
2464 | [④e]
2465 | [⑤]]
2466 | [⑤a]
2467 | [⑤b]
2468 | [⑤d]
2469 | [⑤e]
2470 | [⑤f]
2471 | 何乐而不为
2472 | 到目前为止
2473 | 常言说得好
2474 | 毫无保留地
2475 | 赶早不赶晚
2476 | 打开天窗说亮话
2477 | 耶
2478 | 噢
2479 | 喵
2480 | http
2481 | t.cn
2482 | 笑
2483 | 季
2484 | 允
2485 | cn
2486 | com
2487 | weibo
2488 | client
2489 | version
2490 | APP
2491 |
2492 |
--------------------------------------------------------------------------------
/tools/nlp_tools.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import jieba
3 | import jieba.analyse as ja
4 | import heapq
5 | import os
6 |
7 |
8 | class NLPTools:
9 | root_dir = './'
10 |
11 | def __init__(self, stop_word_file=True):
12 | self.__set_stop_words(stop_word_file)
13 | if not os.path.exists(self.root_dir + 'conf'):
14 | self.root_dir = '../'
15 |
16 | # 加载自定义词典
17 | dict_dir = self.root_dir + "conf/dict"
18 | if os.path.exists(dict_dir):
19 | for dirnames, paths, filenames in os.walk(dict_dir):
20 | for file in filenames:
21 | jieba.load_userdict(dirnames + '/' + file)
22 |
23 | def __set_stop_words(self, stop_word_file):
24 | if type(stop_word_file) is str and os.path.exists(stop_word_file):
25 | self.set_stop_words(stop_word_file)
26 | elif type(stop_word_file) is bool and not stop_word_file:
27 | return
28 | else:
29 | # 找默认的停用词文件
30 | stop_word_file = self.root_dir + 'conf/stopwords.txt'
31 | if os.path.exists(stop_word_file):
32 | ja.set_stop_words(stop_word_file)
33 | else:
34 | return
35 |
36 | def extract_keywords(self, content, topK=20, use_tfidf=True, do_regularization=True):
37 | """
38 | 抽取关键词的功能,集成了jieba的tfidf和textrank
39 | tfidf 适合很短的文本,和词频比较相关
40 | textrank 适合相对长的文本,可能会出现一些相对低频但有意义的词
41 | :param content:
42 | :param topK:
43 | :param use_tfidf: 是否使用tfidf算法,如果不用那么仅使用textrank
44 | :param do_regularization: 是否正则化
45 | :return:
46 | """
47 |
48 | final_words = {}
49 | times = 2.0
50 |
51 | if use_tfidf:
52 | tfidf_keywords = ja.extract_tags(content, withWeight=True, topK=topK)
53 | if tfidf_keywords:
54 | sum_weights = sum(list(zip(*tfidf_keywords))[1])
55 | for word, weight in tfidf_keywords:
56 | final_words[word] = weight / sum_weights * times
57 |
58 | new_topK = int(topK/(2*times)) if use_tfidf else topK
59 | textrank_keywords = ja.textrank(content, withWeight=True, topK=new_topK)
60 | if textrank_keywords:
61 | sum_weights = sum(list(zip(*textrank_keywords))[1])
62 | for word, weight in textrank_keywords:
63 | if word in final_words:
64 | # 两种方法的权重相加
65 | final_words[word] += weight / sum_weights
66 | else:
67 | final_words[word] = weight / sum_weights
68 |
69 | topk_items = []
70 | if final_words:
71 | topk_items = heapq.nlargest(topK, final_words.items(), key=lambda x: x[1])
72 | if do_regularization:
73 | # 正则化,返回结果的权重之和为1
74 | weights = list(zip(*topk_items))[1]
75 | sum_weights = sum(weights)
76 | new_weights = [weight/sum_weights for weight in weights]
77 | words = list(zip(*topk_items))[0]
78 |
79 | topk_items = list(zip(words, new_weights))
80 |
81 | return topk_items
82 |
83 | if __name__ == '__main__':
84 | content1 = '''
85 | 素萃昵语口红¥24国产口红,口碑好到爆[憧憬],他家这次又多出了4个新色号[太开心],颜色超美的,小红薯上一大堆好评,惠惠这收到的反馈也相当不错的[憧憬]【霸王】育发防脱液80ml*2瓶¥7.9这个是2瓶洗发水的组合!!!小瓶的也方便出差旅行带[憧憬][憧憬]防脱发啊!!!四个系列一个价,按发质来啊!!!开抢,现在拍2件20.2!!![怒骂]回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!这个帆布鞋第一次来啊,也是男女歀都有[并不简单]新券!!星空防水手表¥58100大劵!!!磁铁带的,吸铁石吸的很牢固,星空系列,是不是感觉把银河带在手上了[喵喵]白菜价,上,正好放宿舍床上[憧憬]回复@小小女王xff:拯救90后脱发少女[憧憬][憧憬]//@小小女王xff:亲自测评,真的有效果。两个月不到的样子,长了四五厘米10.8的热水袋爆了!!爆了啊!!照这个速度很难撑明天的,你们赶紧去过看看[允悲]。看完就睡吧,晚安了[拜拜]【今日重点推荐宝贝】1.COM烟酰胺原液30ml*2瓶¥19.9http://t.cn/RFpcsvH2.opus小清新文艺保温杯¥39http://t.cn/RFp3tp93.北京同仁堂蜂蜜350g*3件¥39.9http://t.cn/RFp3tpS4.安遇安琪九分魔术裤¥33http://t.cn/RFp3tpa刷新一下少几十件,这个2000件也不知道能不撑到明天[允悲]盼思美充电防爆热水袋¥10.8会过日子已经开始囤货过冬了[doge]上次没抢到南极人的记得抢这个!只有2000件,抢的快的!!![怒骂]反季好价!!!充电防爆热水袋,10.8入炒鸡多款可选!到了冬天可就没这价了婴儿肌补水敏感肌面莫28片¥74日本销量第一面mo,真很给力的活动!!!这款面mo主打的是快速面mo,所以jing华比一般的少,不要敷很长时间,一般8到10分钟!!挺清爽的[并不简单]花印水漾美白焕肤面莫¥39期间店的60券!线下一瓶100+啊!!!这貌似是第一次来?美白不是一天两天的事,要坚持使用![并不简单]0点必抢!!!!1.丝蕴官方店无硅水润洗发露750ml*2¥49.92.英潮虎邦魔鬼辣椒酱,拍2件¥20.23.霸王育发防脱液80ml*2瓶¥7.94.花印水漾美白焕肤面膜¥39学过很多技能,发现最有用的技能是“想开点”。[摊手][给力][给力]-100的大券!![给力][给力]-100的大券!!TWAR/时光战车星空手表¥58这是磁铁表带的,看着很有质感啊,戴脱非常方便,看完视频你是不是已经沦陷了?[笑而不语]http://t.cn/RFCIf3xhttp://t.cn/RFMatqo到手2瓶!!!COM烟酰胺原液30ml*2瓶¥19.9旗见店150的大卷!!不仅可以修复受损的角质层脂质屏障,还可以提亮肤色!!美白啊[憧憬][憧憬]只要一滴就够涂整脸了,2瓶用半年啊[doge][doge]opus小清新文艺保温杯¥39造型Q萌!!400ml的容量也刚刚好[笑而不语]昨天有小可爱反kui很不错的!!保温效果也好[good]国货之光[中国赞][中国赞]素萃昵语口红¥24这次se号很齐全,看来有所准备啊[笑而不语][笑而不语]墙裂安利1#牡丹吻,小可爱的首选哦~超正的正红色,无论是黄皮黑皮都能hold住![憧憬][憧憬]一支才20多,星价比杠杠滴!!!【霸王】育发防脱液80ml*2瓶¥7.9拍第二项!!2瓶洗发水的组合!!专为脱发人群研制[笑而不语]熬夜党快备着!!丝蕴无硅水润洗发露750ml*2¥49.9可以调节头皮水油平衡,适合毛躁脆弱偏油性发质,超值的750ml家庭装2大瓶,拍一次可以用大半年了[憧憬][憧憬]还有润发乳的套装可选!!严济堂褪黑素维生素B6药片*60片¥5睡前半小时1片,可以让你安心入睡!!这是有助于睡眠的不是美白的啊[doge]蒛一轻薄款无痕内衣拍2件¥78.22日系少女风,很多小伙伴买了都说穿着很舒服的~~ABC杯都有,日常单拍一件是49的,惠惠收到的反馈很不错的[并不简单]霸王育发防脱液80ml*2瓶¥7.9拍第二项!!2瓶洗发水的组合!!专为脱发人群研制,熬夜党必备![doge]安遇安琪九分魔术裤¥33她家竟然破天荒的降了5块钱!![吃惊][吃惊]黑色也很百搭款,而且重点很显瘦呀!!海南青柠檬3斤¥9.9第二件5元!!拍2件到手6斤只要14.9!!线下一个都是好几块,惠惠在小红薯上看到柠檬+百香果泡水喝可以美白,好多人试了发现真的有效!!![耶][耶]素萃小专场~1.花染唇间呢语口红24中国风小黑管,盖子上磁扣设计,咔哒一声自动扣上,很带感~2.紧致美颈霜150ml24坚持使用配合按摩可以看到明显的效果,手法轻轻的向上提拉~拍一送一,到手2瓶!!!COM烟酰胺原液30ml*2瓶¥19.9150的土豪券!!!烟酰胺是公认的皮肤抗老化成份,不仅可以修复受损的角质层脂质屏障,还可以提亮肤色[并不简单]每次只要1滴就够了[憧憬][憧憬]这2瓶不是可以用好几个月了!!!注意:敏感肌的建议可以先在耳后或局部做测试,没有问题的...http://m.weibo.cn/client/version花印卸妆水99ml¥19温和不刺激,敏感肌、卸眼唇都可以!!!99ml也很适合短期出行带着[憧憬][憧憬]用过都说好!!!超级吸睛的手表,是不是感觉把银河带在手上了!![污]千颂伊同款!!W.DRESSROOM喷雾香氛100ml¥39这次是100ml的,还送小喷瓶!吃完火锅,烧烤什么的,喷一喷,瞬间祛味!只有水蜜桃跟四月棉2个味道,水蜜桃是那种甜甜的味道,四月棉就像冬日里阳光的味道~第二件9.9!!英潮魔鬼特辣鲜椒酱210g¥11.8两件到手21.7!!大胃王密子君推荐过,真的特别辣,不能吃辣的慎重啊[喵喵]10点巨划蒜第一波~有好几个三只松鼠哦~还有好吃的大米,护肤~需要的蹲1.【前500双,9.99】冬季保暖情侣包跟毛毛棉拖鞋http://t.cn/RFOVpLg2.【前10分钟第2件0元,拍2件28.8】贝贝南瓜2.5斤http://t.cn/RFOVpVe3.【前1000名买一送一,118】三只松鼠中秋大礼包1533ghttp://t.cn/RFOVpaE4.【...http://m.weibo.cn/client/version[给力][给力]券可以领5张!!森马男士T恤¥19.9超多印花款可挑的!!森马的质量还不错,线下还是很贵的,可以给家里的男同胞囤一波!![笑而不语]喜家家收纳袋¥6.9有横版和竖版两个款,夏天的衣服马上就可以收起来了,比直接放在衣柜里更加干净卫生呢[并不简单]买1送1共2瓶!!优理氏胶原蛋白原液2瓶¥28这是新升级的!包装也高级了很多啊[憧憬]屈臣氏~唯品会99元1瓶,活动买1送1,一瓶只要14!还能配合bb霜使用,可以让妆容更自然服帖~byphasse温和保湿卸妆水500ml¥54日常价一瓶都要59的啊!!平价贝德玛,温和无刺激的,敏感肌也可以使用!!惠惠已经空瓶好几个了[憧憬]火烈鸟大白杆浓密睫毛膏¥14.9国货之光火烈鸟,他家口碑挺不错的!!惠惠之前买过他家的星座款,超好用,完全没有苍蝇腿,而且不晕染!!这个性价比更高啊!!!彩兹复古磨砂小皮鞋¥39.9搭配裙子或者裤子都是非常美的,马上秋天就可以穿了,还有运显傍身!!![笑而不语]10点巨划算,三只松鼠专场!!1.【前1小时39.9】山核桃仁155ghttp://t.cn/RFOxIzK2.【前1小时14.9】对对虾50ghttp://t.cn/RFOxIxw3.【前1小时24.9】风干牛肉120ghttp://t.cn/RFOxIC5...http://m.weibo.cn/client/version超值的750ml家庭装2大瓶,拍一次可以用大半年了吧!![doge]艾瑞泽电热溶胶枪¥5.9拍下还送10根胶棒!!平时自己喜欢做手工diy之类的可以入[doge]洛艺轩可爱小清新发圈8件套¥3.8拍前五个选项!!!线下这种样式的好几块一根了!!现在3.8自己到手8根啊!![憧憬]10点聚划蒜~杂七杂八走一波~1.【前5分钟第2件1元】大别山散养乌骨母鸡http://t.cn/RFO66xe2.【第2件0.1元】誉福园蒲江红心猕猴桃10个http://t.cn/RFO66pg3.【7.8】茗仟红豆薏米芡实茶http://t.cn/RFO66El...http://m.weibo.cn/client/versionLG派缤成人牙膏按压式285g*2瓶¥39.8你们的老公邓论带盐的[污]超大容量285g,按压式设计非常方便了,含有珍贵竹盐成分,牙龈爱出血的可以试试,让口气更清新![耶]10点必抢啊!!!伊贝诗洁面70g+纯肌水70ml¥9.9期间店的,洁面+纯肌水!!超级大白菜啊!!!先领卷加车!!!10点拍最后一项!!手慢无的!!![抓狂][抓狂]10点!!!前一小时第二件半价!!snp燕窝补水眼膜*30对2件118.5拍两件相当于到手60对!!海外旗舰店的!!超强补水,镇定肌肤淡化细纹,嘴部周围干燥的部位也可以用!!![憧憬]10点!!!第二件0元!!仅有2000件!![怒骂][怒骂]蓓昂斯蜂蜜果酸滋润保湿身体乳拍2件59+税折合一瓶不到三十!![吃惊]这果酸的,对身上有痘痘的宝宝很友好,水润好吸收,不会有黏腻感!!据说还可以改善身体细纹和鸡皮[憧憬][憧憬]抢手啊!!!!这个价真的没谁了!!![怒骂][怒骂]严济堂褪黑素维生素B6药片*60片¥5浙江400年老字号!!!期间店的活动,可以改善睡眠质量,调节生物钟,睡眠不好经常失眠的可以试试这个~印尼进口丽芝士奶酪威化饼干5包¥12.9起推荐奶酪味的!!!这个超市一包都10块了,这个有5包!!芝士就是力量!![色]丫眯乐云南丽江特铲鲜花饼400g¥12.8玫瑰、抹茶、紫薯3种口味组合,也有单玫瑰的!!吃过最好吃的鲜花饼了,和轩庆的比,轩庆的更甜一些,不喜欢很甜的这个正好[馋嘴]热门好物推荐!!!这次的星空手表颜值真的很高了!!!花印的面膜活动不是很多哦!!!1.COM烟酰胺原液30ml*2瓶¥19.92.星空防水手表¥583.花印水漾美白面莫160g¥394.丝蕴无硅水润洗发露750ml+无硅净屑洗发露750ml¥49.9[给力][给力]-100的大券!![给力][给力]-100的大券!!TWAR/时光战车星空手表¥58美炸了有木有!!星空系列,颜值逆天啊!!这是磁铁表带的,看着很有质感啊,戴脱非常方便~[污]http://t.cn/RFCIf3x花印水漾美白面莫160g¥39药监局认证,期间店的第一次来活动哦~~据说美白效果蛮好的,线下一瓶都是100+的[跪了][跪了]澳宝一分钟焗油护发素225ml¥19.9这个是免蒸的非常方便,洗头后直接抹头发上停留5分钟,头发会特别的柔顺!!几乎适合所有发质,强烈推荐给常染烫及头发受损的宝宝~[笑而不语]先领卷加车,10点拍!!!华美月饼礼盒¥14.8拍第一个选项,九饼7味的!到点会改价!超市同款居然都要60+!![吃惊][吃惊]中秋提前囤一波!!!先领券加车,10点拍!!美丽家秋广式月饼¥29.9旗间店的活动呢~2种包装可选,粉色和蓝色[笑而不语][笑而不语]作为手礼也不错哦,跟传统的月饼相比会细腻一些呢,颜值真心高!!反馈都很好啊!!一年四季都可以穿的!!!关键是显瘦!!显瘦!!显瘦!!![憧憬]10点!!!第二件0元!!一定要拍两件啊[憧憬]蓓昂斯洗面奶拍两件49超值500ml*2瓶!!0皂基的无泡沫型,很温和!很适合干皮和敏感肌的宝宝使用!还有控油+祛痘的效果~记得拍两件啊啊!!回复@彭亚茹是女生:现在可以拍!!!有70的大卷!!!拍最后一项!!超值2件tao哦!!!!![憧憬]//@彭亚茹是女生:没了前一小时第二件半价!!拍2件共60对!!!熬夜党或经常对着电脑的人群必备!!!7.9抢霸王!!速度速度!!拍第二项,霸王育发防脱洗发水80ml*2瓶只要7.9!!从此不再惧怕脱发!!吃货们,开抢啦!!![色][色]加送50ml洗发水!!舒蕾山茶花洗发水套装¥39.9有600ml*2瓶洗发水和600洗+400护两个选项可选!!拍下还送50ml洗发水,正好出门携带挺方便的!![憧憬]平时这个价一瓶都买不到啊!!!不含酒精的无泪配方,敏感肌都可以用!韩后绿茶卸妆水300ml+150ml¥39.9拍150ml要就要19.9了啊!拍300ml的会直接赠150ml+20ml+卸妆棉50片,所以拍300ml的会更划算哦~[污][污]本博加热8D按摩枕¥39躺坐两用的!按摩的时候还可以加热,特别是冬天的时候用这热热的、暖暖的,超舒服~[笑而不语]蓓昂斯专场!!!1.蓓昂斯蜂蜜果酸滋润保湿身体乳,第二件0元!!仅有2000件!拍2件59+税2.蓓昂斯洗面奶,第二件0元!拍两件493.byphasse蓓昂斯卸妆水500ml¥5410点必抢啊!!!伊贝诗水嫩护肤水嫩两件¥9.9官旗店的活动!拍最后一项,内含:洁面70g+纯肌水70ml某东要一百多的呢,学生党必入的补水大白菜!!![抓狂][抓狂]10点活动!!第二件半圿!!欧莱雅的一次性染发喷雾拍2件103.5官旗店的,李宇春袋盐的!!在小红薯上去get了一下使用步骤:在干发上用,距离发梢15cm处均匀喷洒,静等一分钟,干透后梳理头发就可以啦!!超简单的!!![耶][耶]因为是一次性的,所以喷一次只能管一天哦,很适合着急出门用...http://m.weibo.cn/client/version素萃美颈霜¥24经典国货之光,小紅薯上一大堆好评[doge]可预防颈纹,敏感肌肤也可以用的,每次取黄豆大小就可以[doge]搭配按摩手法,都说去颈纹效果挺好的,一定要坚持使用哦[笑而不语][笑而不语]历史最低价!!!!艾瑞泽电热溶胶枪+颂10根胶棒¥5.9拍第一项!!diy做些手工艺也好啊,也可以黏黏补补~[笑而不语]拍2件啊!!!仅有2000件!!速度!!期间店70的大卷啊!!!库存在飞!!!!都入了没???[怒骂][怒骂]中大号公仔20-55cm¥2.8起快快快,抢手系列!!!比夹娃娃划算!!!素浴法国无火香薰精油¥9.9搭配藤条手工干花装饰,天然无火香薰,植物萃取,味道淡淡的可以放卧室,大概能用30~40天左右哟~当做摆饰也很好看的[笑而不语][给力][给力]热门必抢好物~伊贝诗真的是超级大白菜啊!!这次还是旗舰店的活动!!错过拍大腿啊!!!!1.蓓昂斯蜂蜜果酸身体乳¥78.97(拍2件)2.伊贝诗水嫩护肤水嫩两件¥9.9(拍最后一项)3.星空防水手表¥584.优理氏胶原蛋白原液2瓶¥28(买1送1共2瓶)这款一瓶整整500ml,这次两瓶到手啊!![憧憬]第一次来活动!!线下一瓶150!!!花印水漾美白焕肤面莫¥39这款是冰淇淋质地的延展性非常好,看评论都说是“敷出看得见的白”,不过美白不是一天两天的事,坚持使用会看到效果哈~[吃瓜]2瓶啊!!!750ml大容量!!!丝蕴无硅水润洗发水750ml*2瓶¥49近一两年大热的无硅油洗发水,功效是防止毛孔堵塞,去油防脱发,性价比很高,洗完后头发很柔顺丝滑!!有4款组合可选,线下一瓶就是54.9了[跪了][跪了]某东要一百多的呢,现在只要9.9!!![怒骂][怒骂]伊贝诗水嫩护肤水嫩两件¥9.9官旗间店的活动哦~拍最后一项,含:洁面70g+纯肌水70ml!!超市适合学生党了!!!正好水和洁面都用得很快!!!110的土豪券!!芳卓萱牛仔裤¥49两色可选!码数齐全!这种宽松的比普通的窄脚裤更能修饰腿型,也不会显得过于肥大[并不简单],还送运险的放心!!!!直接拍一件就到手2瓶!!折合也就十大洋一瓶了,简直不要太划算!别看它小小一瓶,功效绝对的很棒的啊!森马杨洋同款纯棉印花T恤¥19.9夏装最后一波!!码子还是全的,卷能领5张!!!抓住夏天的尾巴[笑而不语]洛艺轩甜美森女系发箍发带4个¥9.8多款可选,洗脸洗澡化妆的时候能用上,出门当做发饰也不错[笑而不语]到手两条啊!!两条!!!布兰奇.浴巾2条¥29.9浴巾140*70的+毛巾75*35的!!这种吸水性非常好,这个浴巾上绣的英文还是对应的1-12月份,可以选择自己的生日月份和有意义的月份哦[喵喵]最后10分钟了!!!记得拍2件!!含果酸和蜂蜜啊!!!鸡皮肤的也可以入手的哦!!!一次性口罩50只¥5.1一年四季常备!!防晒、防雾霾、耍帅都可以![doge]这个价格也是低到让你们开心啊!!!也就一个U费的呢!!!赶紧上啊[抓狂]买一颂一!!维简便携密封小药盒¥3拍前4个选项啊,买一送一同款,共2个!!!平时吃维生素、蔓越莓胶囊、葡萄籽之类的,都可以放小药盒里随身带-150的大卷!!马连奴奥兰迪格纹斜挎包¥49旗见店的,这个牌子的包实体店挺贵的,至少150+以上!!黑色的经典百搭,粉色的少女感十足!!更喜欢哪个颜色[并不简单]恋意物滋养眼睫毛增长液¥5.8有4.9高分口碑,促进睫毛发育,长出浓密纤长真睫毛!!惠惠特意咨询了商家,建议3瓶一周期的效果会更好[笑而不语]第二件0.1!!拍2件!!!红心柚子5斤¥24.8每次到了月饼节都必不可少的柚子,[馋嘴]这次还是红心的,红心的要比白心的更甜啊!![笑而不语]蓓昂斯玫瑰精华爽肤水500ml*2件¥49西班牙进口!!便宜又大碗500ml装,只要49到手两大瓶啊!!小P老师也有安利过!这款的香味是比较浓郁的,但是没有酒精没有激素没有矿物油,敏感肌也可以用呢。可以做水膜湿敷或者放在喷壶里面当补水喷雾[污]http://t.cn/RFt02by赠10枚原装刷头!!!福派电动牙刷配10枚刷头¥63起拍最后2个选项,粉色和白色可选的~配10个刷头啊我的天!![给力]虽然惠惠之前在史低59的时候买的,但也只有5个刷牙[允悲][允悲]这个简直太划算了吧,可以用到天荒地老了[跪了][跪了]原宿休闲帆布鞋¥24.8百搭港风板鞋来啦~~配个直筒裤和堆堆袜超级好看!![憧憬]曼秀雷敦修色润唇膏¥19.9传说中秒S一切大牌唇膏的平价有色润唇膏!!颜色都很日常[喵喵]薄涂的时候原唇色!厚涂会显色但是又不会很夸张!因为这款是有色润唇膏!而且水润度不错,素颜都可以用的~~~110的大卷!珂卡芙百搭平底鞋¥109期间店110的大卷啊!!!线下现在打折也要199一双的[摊手]预售的,只有200件!!!热门好物推荐!!!绝对不能错过的星空手表!这次面膜、洗发水和卸妆水都可以囤个够了!!都是天天会用到的[笑而不语]1、星空防水手表¥582、花印水漾美白焕肤面莫¥393、丝蕴无硅水润洗发水750ml*2瓶¥494、byphasse蓓昂斯卸妆水500ml¥54指尖香乳酸菌夹心吐司面包1kg¥20.8面包松软香糯,里面的夹心甜而不腻!!来不及吃早饭来一包这个刚刚好[舔屏]实时热门推荐!!!伊贝诗10点到现在已经疯抢12万的销量了,而且这个价格也是低到让你们开心啊!!!换号来多囤吧!![憧憬]1.伊贝诗水嫩护肤水嫩两件¥9.9(拍最后一项)2.素萃美颈霜¥243.森马杨洋同款纯棉印花T恤¥19.94.星空防水手表¥58高腰直筒裤2条¥612条啊!折合一条才30[doge]多个歀式组合可以选,都是比较百搭的样式!!还有运显傍身啊!!!英国HB荷柏瑞保健品专场[doge]英国百年的健康品牌啊,每款效果都不一样哎,自己挑一下了~~1,葡萄籽精华胶囊50粒¥59葡萄籽是他家的爆款啊!卖断货的,能保湿美白,抗辐射,抗衰,做冻龄少女[doge]2,水解胶原蛋白180片¥114胶原蛋白的效果就是延缓衰老的,逆转肌龄,[doge]适合25岁以上的妹...http://m.weibo.cn/client/version洁面+纯肌水!!超级大白菜啊!!相当于出个u费免费送了!!!![怒骂][怒骂]-400的大卷啊!!-400的大卷啊!!奥克斯多功能破壁机¥599是破壁机!!!4.9的高分!!打出来的果汁没有粗纤维,基本都是细腻的果汁,居家必备好货~榨豆浆米糊也非常方便!!这个价线下绝对是买不到的!!![怒骂]http://t.cn/RFWGiRs超美网红拍照背景纱70*100cm¥6.9起拍照拍视频的背景神器!!!美甲、静物、自拍4色可选!拍照片出来的效果真的是非常好看啦[耶][耶]红豆中腰内裤4条¥29.8多色可选,目前发过的所有内裤里反馈最好的,毕竟大牌,几乎0差评!!内裤一定要勤洗勤换啊!!优可柔一次性棉柔巾¥7.9第二件5快!!可以当小毛巾用,还可以当卸妆棉用,洗脸干净卫生,不像毛巾一样容易滋生细菌,很适合敏感肌了!白送了!!!速度上!!!最小的是娃娃机同款,最贵的也只要4.9!!手慢无!!!popmagic4inlook美瞳小直径半年抛1片¥29第二件不要钱!!拍2件只要29!!这个价半年抛的简直不要太划算!!![憧憬]回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!!这次高帮和低帮的都有!!!粉色小猪苹果手机壳¥9.9这个很可爱啊,是时候换手机壳了[笑而不语]-500巨卷!!!有运险傍身!!!法琳黛中长款双面呢外套¥299多色可选,双面呢!!轻薄又保暖[憧憬]直筒型的版型,遮肉显瘦!!线下双面呢都上千了[doge]被称为平价版贝德玛!!!反馈还是很不错的!!!秋季休闲运动裤子¥19.9侧面的白色条纹在视觉上可以修饰腿型哦!!穿着舒适又显瘦啊!!![笑而不语]300的大卷!!!!康佳.激光脱毛仪¥299史低啊!!!惠惠买的时候是399呢[跪了][跪了]美容院去一次不止这个价!!!很多宝宝都说用几次就开始长得很慢了,用前记得把毛都剃掉!!!基本上七八次就可以完全去掉了,奶茶东的同款都是499啊[吃瓜][吃瓜]线下一瓶54.9的啊!!我们卷后2瓶只要49.9哦[污][污]-90元大券!商家吐血冲浪,量够即停[怒骂]韩瑟收缩毛孔护肤3件tao¥9拍第一个!!线下专柜要189[怒骂],据说可以在一个月内,改善痘痘,色斑,毛孔粗大等情况!难得有的好价啊!!!幼小型宠物小包袱卖萌枕头围巾¥16这个敲可爱,给家里的喵星人买个吧[哈哈]国货之光——素萃昵语口红24这款是很有质感的古风包装,磁铁亮黑红管,膏体上还有印花,四个颜色的色号名字超级有古韵[耶]给你们安利下色号!01牡丹吻DIOR999的平价替代试色,很正很正的正红色,如果你还没有一支显白的正红色,这支是不二选择~02凌霄歌暖橘调的红~很适合夏天的元气暖橘,...http://m.weibo.cn/client/version送支架!!!丽亚斯葫芦美妆蛋*3个装¥8.8干湿两用,有葫芦/水滴/斜切,干湿两用,打湿上妆比较不吸粉还更加服帖的![笑而不语]最生活小米毛巾¥14.9小米投资的品牌,G20指定毛巾,尺寸34*76cm,这个我的到了,真的超厚超柔软啊[憧憬][憧憬]准备用来擦头发!!听说3秒吸水[笑而不语]贞索厚底马丁靴¥49.9有3CM跟高+1CM内增高,小个子穿也毫无压力,简单大气的样式,还有运显傍身!![doge]本博红外加热按摩枕¥39躺坐都可以的,按摩的时候还可以加热,进行美美的热疗按摩,很舒服!可以舒缓酸痛点神经,可以长辈送一个!![good][good]http://t.cn/RFWK4T0快快快,第二件不要钱!!!御泥坊黑面膜42片¥76.9一定要拍2件!!!到手42片!!!喵超的活动,快快快,赶紧啪2件,啪下不减活动结束!!!猪太帅毛茸棉拖鞋¥7.99这种的鞋底稍微有点厚度,不容易踩到水,现在趁好价提前备着[doge]宏丰贵邦纯手工阿胶糕260g*2¥38.9期间店的,买一送一,两盒装!!正好一盒自己吃一盒给老妈,补血补气的,李盒的送人也不错[并不简单]桌面收纳文件架¥15.8宿舍东西太多太乱,就需要这个来拯救!![并不简单]-100大劵!!星空防水手表¥58美炸了有木有!!颜值超高的时空手表,感觉像是手上戴了整个银河系,有运显的,可以放心入[憧憬][憧憬][憧憬]http://t.cn/RFCIf3x无孔圆扣皮带¥4.9无孔的更好调节,搭配牛仔裤刚刚好[doge]好吉利无芯卷纸36卷¥29.99日常消耗品,一卷才8毛3啊,趁着活动多囤点![笑而不语]荔园海鸭蛋雪媚娘红豆蛋黄酥55g*6枚¥24.9反馈最好的蛋黄酥!平时都是28的!!!一层薄薄的雪媚娘皮然后就是红豆馅最后就是大大颗的海鸭蛋,口感丰富[色]猫人内衣¥29.9前扣的,方便就不用说了[笑而不语]还聚拢!!猫人的内衣质量一直不错啊!!天鹅绒春秋丝袜打底裤2双¥9.9初秋就差不多可以穿了!!!9.9到手2条打底裤简直是白菜价啊!!![怒骂][怒骂]白菜好物推荐!!!伊贝诗还在疯抢!!!9.9带走洁面+纯肌水!!1、多功能转换器带夜灯¥5.82、成人竹炭软毛牙刷¥11.93、丽芝士印尼进口威化饼105g*5袋¥12.94、伊贝诗水嫩护肤水嫩两件¥9.9-110的大绻!!商家吐血充量[允悲][允悲]仙醇茶叶铁观音盒装250g¥12.9源自安溪原产地,精美盒装!!老爸们最爱喝的茶叶茶啊!!!自己喝或者颂人都ok啊!!伊贝诗洁面70g+纯肌水70ml¥9.9官旗活动!!拍最后一项!!某东要一百多的呢,现在只要9.9!!!近一两年大热的无硅油洗发水!!丝蕴无硅水润洗发露750ml+无硅净屑洗发露750ml¥49.9这次有多个组合可选啊!!功效是防止毛孔堵塞,去油防脱发,性价比很高,洗完后头发很柔顺丝滑!!线下一瓶都不止这个价了啊!!![怒骂][怒骂]飞利浦电动牙刷¥189世界小姐张梓琳带盐,大牌纸,送牙刷盒和牙刷头,这个型号属于飞利浦的入门级电动牙刷,刷头属于中软,每30秒就会提醒你换区域,两分钟后会自动停止,不用担心刷牙的时间不够!vivo全系列钢化膜2片¥2.6大白菜啊!!!颂神器+后膜!!拍7.6的选项!!!推荐个按摩手法,懒的话怎么舒服怎么推,不过记得要坚持使用哦~http://t.cn/RFWniqM拍4件!!都市丽人聚拢文胸4件¥69线下大牌!!4件只要69啊!!!线下一件就这个价了[跪了][跪了]快快快,趁还有码子!!达芙妮单鞋¥19.9清仓价!!!这个给妈妈入双平底鞋还是很不错的啊[憧憬]红豆家纺.秋冬柔软被芯¥99官方旗间店的,4.8分评价,三个颜色可选~我看了下,单人的150x200cm的最便宜了,在学校用的话也是刚刚好啦~[耶][耶]【午间热销榜】——颜值超高的星空手表有100的券!送人送自己都超好看!9.9就能入手伊贝诗护肤两件,纯属体验价啊!还有花印的这款面膜是第一次做活动哦,线下要150的![怒骂]1.星空手表¥58http://t.cn/RFW3AeG2.花印面莫¥39http://t.cn/RFW3AeI3.丝蕴洗发水750ml*2瓶¥49...http://m.weibo.cn/client/version有160的大卷!!!COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、假姓皱纹、笑纹,紧致眼部肌肤,淡化黑眼圈!熬夜党必备!!今天没抢到原液的可别再错过这个了!!![怒骂][怒骂]中长款卫衣外套¥69.9马上天气冷了就可以穿了!!!酷酷的学院风,还有运显傍身!!![doge]回力百搭经典款帆布鞋¥59Jackson王嘉尔同歀,男女都可以穿!!回力这两年来超火的,国内外好多明星都在穿,老牌子了,还有运显傍身!![并不简单]好多码都没了,有喜欢的别错过啊!!!火烈鸟大眼睛睫毛膏¥14.9火烈鸟大白杆~[吃瓜]火烈鸟的睫毛膏反馈一直挺好的,适合新手。。。我这种手残党涂了都没有苍蝇腿。。它是螺旋刷头的,360°贴合睫毛~珂卡芙蝴蝶结单鞋¥99线下都有实体店的~3色可选,35~39都有啊!!!这种鞋底很软的,穿起来很舒服的,逛街逛多久都不累脚[憧憬]花印美白面膜¥39这款是第一次做活动!看了一下详情页有日本药监局认证的美白功效~小红薯的小姐姐分享是159入手的[允悲]墙烈推荐水蜜桃给你们,据说好闻到自己都想吃掉自己啊~[憧憬]W.DRESSROOM淡香喷雾100ml¥39这个是防弹少年团同款诶!只有四月棉,和蜜桃香味了~之前发的29块只有70ML,现在这个是100ML的!!算下来更划算!!!映画日系亲肤绒披肩¥29可以是披肩、围巾、小毯子,12个颜色总有适合自己的[笑而不语]实时热门好物!!!手表的颜值简直不要太高!!!伊贝诗的套装简直等于免费送!![怒骂][怒骂]1、星空防水手表¥582、伊贝诗护肤两件¥9.93、素萃美颈霜¥244、4inlook美瞳小直径半年抛,拍2件¥39梦幻岛钢化玻璃陶瓷饭盒780ml¥6.5可微波炉加热,比塑料加热更健康,双耳设计,防烫更人性![并不简单]直降10块大洋,史低价!!活力达蛋白代餐奶昔400g¥19富含25种矿物营养元素,科学配比膳食纤维!饱腹时间长达4小时,可以作为晚上代餐,减肥必备了!!![耶][耶]怀梦时光纯棉内裤*4条¥29.9挺舒服的面料,他家的衣服惠惠也拍过好几次了,料子什么的都好喜欢,很少女[哆啦A梦花心]买一赠一!这次比之前还高级,这款可以加在粉底和BB霜里面让妆容更服帖~现在只要33!!!史低价了!!![污][污]//@每天睡不够起不来:一直买的都是他家的打底裤,弹力好,不过之前都是39买的[泪],正好现在便宜又可以买着秋天穿了澳洲山羊奶身体乳250ml¥5.1小红薯力荐!!新鲜羊奶小分子,水润好吸收!!全网最低价啊!!!塔菲克入耳式通用耳机¥5.8音质一般般,经常丢耳机的小可爱可以备一条在身上,丢了也不心疼![并不简单]降了20块啊!!!故事主角破洞牛仔外套¥49.96款可选,赶紧上啊!!之前要69的,这次是反季才有的价!!xs到2xl都有码!![笑而不语]爱乡亲蒸蛋糕500g*2¥16.9蒸的好吃不上火,足足两斤啊!!!线下一斤就是这个价了!!!早餐再配一瓶牛奶超级赞!![舔屏][舔屏]LG派缤成人按压式牙膏285g*2瓶¥39.8超市同款54元1瓶啊!!现在2瓶才38.8!!!邓论带盐的,里面含有珍贵竹盐成分,很多小可爱反馈这款的味道接近绿箭口香糖诶~[doge]番茄派.温和洁肤卸妆水300ml¥9.9大白菜卸妆水来了!!!温和不刺激,性价比很高!!![憧憬]光腿神器!!现在买月底就可以穿啦!!![污][污]躺着玩着手机顺便按摩也是可以的哦,为懒人准备的[坏笑]Dr.Althea艾医生壳聚糖保湿补水套装,壳聚糖精华乳70ml+壳聚糖精华水70ml258元(包税)据说这个艾医生的新品是修复界的黑科技[吃惊],主要是添加了壳聚糖这个很牛逼的修复成份,这种成份就只有MedSpa,Channel,雅诗兰黛才有添加的,不过香味比较多人吐槽,茉莉花香味,就是图五所说的很容易让人联...http://m.weibo.cn/client/version平价贝德玛!!byphasse卸妆水500ml¥54温和保湿,卸妆干净不刺激!!西班牙国民护肤品牌,便宜大碗,很耐用啊[憧憬]worms软毛电动牙刷¥11.9超市一支稍好点的普通牙刷都要十几块了,入门级电动牙刷,正好体验一下[并不简单]注意!!注意!!史低来袭!!梵歌抖抖机甩脂机¥19一直都是39的!!懒人甩脂神器!!瘦腿,瘦腰,瘦肚子,瘦手臂都可以!!躺着瘦[憧憬][憧憬]史低价不要错过啊!!!!http://t.cn/RD8Ptb8和易烊千玺一起穿破洞裤吧~[嘻嘻]夏乞丐破洞打底裤¥35超级百搭的打底裤!!破洞的也很有个性,还有运显傍身哦!4inlook美瞳半年抛1片2件¥29第二件0元!!半年抛1片,拍2件就要一对啦!!0~800度都有哦,他家的反馈一直不错啊!!![污][污]伊贝诗洁面70g+纯肌水70ml¥9.9官旗活动!!拍最后一项!!某东要一百多的呢,现在只要9.9!!!完全就是一个u费的钱啊!!![怒骂][怒骂]晨光20支中性针管子弹头替换芯¥7.79开学囤笔了啊!!![doge]颐莲玻尿酸喷雾300ml¥59买即送100ml,到手共400ml!大的适合放在家里,小的可以出门携带,夏天出门真的很晒,用这个及时补水还能起到舒缓的作用,喷头炒鸡细腻,甚至秒掉雅漾和理肤泉![赞][赞]ins超火背带裤¥69ifashion店的!!背带裤真的是减龄神器了!!天气凉点就可以穿了[笑而不语]花印水漾美白焕肤面莫¥39期间店的!!线下一瓶要150的!![吃惊]这款是冰淇淋质地的,延展性非常好,膏状的很好抹开,而且润润的哦~[喵喵][喵喵]看评论都说是“敷出看得见的白”![吃瓜]不过美白不是一天两天的事,坚持使用会看到效果[耶][耶]热门好物推荐!!!按摩枕自用送人都是不错的[笑而不语]1.素萃美颈霜¥242.本博红外加热按摩枕¥393.珂卡芙百搭平底鞋¥1094.伊贝诗水嫩护肤水嫩两件¥9.9沃尔梦水洗棉四件套¥39起床单+被套+枕套,再送2条毛毯或者枕芯2个!!拍1.2米的起,正好适合宿舍用啊!![憧憬]帝兰修眉刀20个+眉笔+眉卡¥5.9这个价格没谁了!!!用得上的囤着吧!!![怒骂][怒骂]月亮太重啦,摘不下来~只能摘星星戴在你的小手上啦[二哈][二哈]第二件不要钱!第二件不要钱!御泥坊黑膜tao装42片¥76.9记得拍2件!!喵超的活动,快快快,赶紧啪2件,啪下不减活动结束[怒骂][怒骂]拍一件6.8!!拍两件10.8!!!苹果手机壳¥6.8涂鸦可爱卡通,软硬适中,全包边防摔耐磨!超多样式选择!![笑而不语]一机多用,性价比真的超高啊!!!居家必备好货~[good]连帽宽松加厚短款卫衣¥29反季促销才有的好价!!这个之前都是39的,质量不错,还有运显傍身!![憧憬]spa7ce七度空间卫生巾6包70片¥39.9极净秘护5包30片+颂40片掌心护垫,共6包70片!!王子文代言的,线下超市可没有这么划蒜!![跪了][跪了]大白菜!!换号撸啊!!![怒骂][怒骂]天鹅绒春秋丝袜打底裤2双¥9.9初秋就能穿了,两个颜色都好搭!!!黑色更显瘦些!弹性很大,囤着秋天穿!!!晨光中性笔0.35签字24支¥16.9期间店的!!!比实体店划算很多啊!!囤笔囤笔,应该够用一学期了吧?[doge]大部分都只有小码和中码了,喜欢的就赶紧看看带走吧[跪了][跪了]原液已经涨价了,不过又上新了歀眼霜,只要19.9!!线下都是100+的啊!!![怒骂][怒骂]【1】COM神仙乳50ml¥24.9【2】com神仙水100ml¥29.9【3】COM期间店多效大眼精华眼霜¥19.9诗佩雅的女士睡衣7件套,¥118一整套7件啊!!可以穿一年四季的睡衣[憧憬][憧憬]颜值还高!![憧憬]素浴无火香薰精油¥9.9藤条手工干花装饰,天然无火香薰,味道属于那种淡淡的,大概能用30~40天左右,还有补充液送!!平时当做摆饰也很好看的[笑而不语]好爸爸天然亲肤洗衣液13.36斤¥69黄磊和易烊千玺一起带盐的!!!含:2kg*2+1kg*2+220g*2!13斤啊!!!囤一次可以很久了~[并不简单]马奇新新夹心冰淇淋饼干200g*3袋¥29.9马来西亚进口的,号称饼干界的冰激淋,据说放冰箱3分钟,可以吃出甜筒的感觉[舔屏][舔屏]拍2件发3盒!只要28!!!!郑多燕复合蔬果酵素果冻¥28拍2件!!!维商36一盒!!日常一盒最便宜都要19啊!!!现在挖到-50漏洞卷!!!28直接带走3盒!就是果冻的味道!!超好吃!!晚饭后吃第二天就可以正常上厕所了[憧憬]史低回归!!!RealBubee电动吸黑头神器¥48美容院小气泡同款!导出黑头仪,收缩毛孔,提拉紧致!!送功能性美容头+微晶钻石美容头+过滤棉,一机多用[笑而不语]注意不要在一个地方吸太久[并不简单]用前先用热毛巾湿敷或者配合导出液效果更好~~开迪多层简易鞋架¥12.9起有多款大小和颜色可以选择,收纳鞋子的神器,宿舍必备了!!![笑而不语]新品冲量有才的价啊!!!![怒骂][怒骂]小惠家字母绣花长袖套头卫衣¥34.8这款版型偏oversize风,慵懒休闲!!虽然还没有评价,不过有运显傍身可以放心买啊!!![憧憬]Clearasil四小时祛痘膏¥49Clearasil这个牌子在中国的知名度还没有那么高,但是在美国却是祛痘产品的常年榜首[doge]传说中的急救祛痘膏!!!很难得的活动,痘痘肌可以备一瓶,都说效果挺明显的[憧憬],一看有痘就抹,方便实用!!!网易严选旗见店!!!他家质量超级好!!!1.网易严选电动式硅胶洁面仪¥892.网易严选乳胶颗粒颈枕U形枕¥693.网易严选纯棉可裸睡睡袋¥994.网易严选全棉透气简约四件套¥119史低价了啊!!!露得清.SPF50+防晒霜¥59期见店的,SPF50+高倍防晒,用着清透,不油腻!!去海边玩、夏天军训、练车什么的都足够了,奶茶东同款特.价都要99[跪了][跪了]伊贝诗水嫩护肤水嫩两件¥9.9拍最后一项,含:洁面70g+纯肌水70ml!!线下去买绝对不止这个价啊!![跪了][跪了]某东要一百多的呢,现在只要9.9!!!赶紧上啊[抓狂]康美臣9饼3味广式月饼510g¥24.94.9超高评分~!!抹茶蜜豆,木瓜蓉沙,经典红豆沙三个口味!!送礼精美礼盒+手提袋!!自己吃送礼都不错啊!![笑而不语]澳宝沐浴露玩美假日600ml*3¥39.9澳宝家的洗发水、护发素都很好用!!!淡淡的清香,泡沫很丰富,而且很容易冲洗!!chic链条斜挎单肩包¥29.9ifashion店的!!还有运险!!里面空间也很大,带子可调节!![憧憬]怦然心动草莓晶饰品¥7.99项链、手链、耳钉都有,款式不同,价格也不太一样,据说粉色还能招桃花的咧~~[嘻嘻]丫眯乐云南特产鲜花饼400g¥12.8玫瑰、抹茶、紫薯3种口味组合,也有单玫瑰的!他家的鲜花饼馅多皮薄,甜度正好合适,我不怎么吃甜的都喜欢吃[馋嘴]这次是首次推,看了它家的反馈总体还不错!!美白效果很好,宝宝们可以试试~-100大劵!美炸了有木有!![污][污]星空防水手表¥58颜值超高的时空手表,感觉像是手上戴了整个银河系,有运显的,可以放心入[憧憬][憧憬][憧憬]http://t.cn/RFCIf3x第二件0.1四川蒲江黄心猕猴桃共5斤2件¥19.8猕猴桃号称维C之王!!单个重70-150g,这个5斤差不多有30个了!!!超市9个就要20多了!!![跪了][跪了]按摩的时候还可以加热,暖暖的很舒服,天气转凉也可以用~看看有没有适合的[doge]1.教师资格证考试教材¥462.中学教师证资格教材¥28超大浴巾+毛巾两件tao¥29.9超大号浴巾+毛巾两条,在门店单买都要35块啦!可以选月份的哦[doge]尺寸最大有4XL哦~换季就能穿了,黑色也好显瘦的呢,搭配衣服也超好看~//@每天睡不够起不来:一直买的都是他家的打底裤,弹力好,不过之前都是39买的[泪],正好现在便宜又可以买着秋天穿了实时热门推荐!!!伊贝诗含:洁面70g+纯肌水70ml某东要一百多的呢,学生党也能轻松入的白菜补水,现在只要9.9!!!速度啦!![怒骂][怒骂]1、森马杨洋同款纯棉印花T恤¥19.92、伊贝诗水嫩护肤水嫩两件¥9.93、TWAR星空手表¥584、COM多效大眼精华眼霜收¥19.9现在不买,旺季被宰![二哈][二哈]冬天很流行的大衣啊!还是反季囤比较划算!!芳卓萱宽松高腰牛仔裤¥49.9浅蓝色是直筒裤型,深蓝色和深灰色是小哈伦的!!这种宽松的比普通的窄脚裤更能修饰腿型,还有运显!![笑而不语]【扬子】充电防爆卡通暖水袋¥14.8现在买最划算了!!昨晚没抢到南极人的可别再错过扬子的啊!!![怒骂][怒骂]梦莎德晴雨两用雨伞¥16.9史低!!惠惠这边收到的反馈还不错嘛,他家最受欢迎的是樱花系列,不过其他的也不错,都是一个价[并不简单]LG派缤成人按压式牙膏285g*2瓶¥39.8超市同款54元1瓶啊!!邓论带盐的,含有珍贵竹盐成分,牙龈常出血的小伙伴可以试试,!!!-100的大卷!-100的大卷!原宿内增高运动鞋¥59-100大卷!三款可选,尺码齐全!透气性好,还能悄悄增高几厘米[憧憬]防滑绣花进门地垫*2块装¥5到手2条啊!!!拍第一项,尺寸是40x60cm的!!!KAMILIANT/卡米龙万向轮拉杆箱¥249起唐艺昕,刘昊然,新F4共同推荐的拉杆箱!![憧憬]有20寸、24寸和28寸可选,里面是分干湿分离层的,万向轮也是静音减震,线下价要700+的啊[跪了][跪了]颜值真心高了!施华蔻护发精油喷雾80ml¥49-50的大券!!旗件店的,他家的精油特别好用,适合烫染受损发质!!味道好闻,不油腻,某东109啊!!最好吃的饼干!!!丽芝士威化饼零食大礼包105g*5¥12.9起拍第一选项,超多小可爱买过都说好吃的,喜欢吃芝士的会更喜欢这饼干啊!!!闪易体脂称¥29.8体脂称啊!!4.9的高评还有运险,送皮尺+电池!!这个都不用手机连接的,秤面上就有各种数据显示!!!还有触屏按键!!建议加10块就是usb充电的!![憧憬]快快快!!!空调被只要9.9!!!七好啄木鸟空调被¥9.9大白菜啊!!!拍100x150cm尺寸!!!上次没撑一会就没了!![怒骂][怒骂]佰翔空厨椰子饼220g*3盒¥27超值8枚*3盒!!推荐椰子和红豆味的!!吃货浮力啊!![舔屏][舔屏]美的电磁炉¥139美的生活电器旗舰店的!!买就赠运费险+不锈钢汤锅+铸铁炒锅!!2100W大火力,均匀加热,黑色微晶面板触摸式,颜色很好看,可以烧水,炒菜,煮火锅,超级方便!!![憧憬]宿舍用品合集——有些小可爱都开学了吧,快来看看你还缺啥电煮锅:http://t.cn/REMpn8F床上桌子:http://t.cn/RRralgW酷毙灯:http://t.cn/RBrHNv7插座:http://t.cn/RBfg0il坐垫:http://t.cn/REAmsqY...http://m.weibo.cn/client/version2件34.9!!2件34.9!!Domfion/朵迷芬日本无痕内衣2件¥34.9冰丝无痕的,一点都不闷热!!背心、吊带的都有[笑而不语]超舒服,睡觉都能穿系列!!宽松条纹毛衣长裙¥79ifashion店的!!!慵懒风带点性感,感觉比较适合瘦子[笑而不语]云本蒸汽热敷眼罩10片11.9它家的新款,拍后四个选项是11.9到手10片!!拍前四个选项是48,到手60片,算下来的话拍前四个选项是更划算!只想要试试看的那就后几个选项~这种蒸汽眼罩在睡前敷一下第二天眼睛真的是会舒服很多的![笑而不语]猫娘志家的2款活动,正好一套!!比前几天还降了5块!!![憧憬]1、七分袖针织上衣,¥542、格子中长半身裙,¥84关于伊贝诗我来啰嗦几句吧!!![doge][doge]今天很多宝宝问伊贝诗怎么这么便宜~其实这个完全就是商家打品牌促销活动,也是为了抢占TB搜索排行的!!商家是亏本冲量的,所以呢,还是我们受益的[坏笑]毕竟线下要80+,现在活动只要9.9!!!拿回来保养胳膊都可以的~刚刚去科普了一下这个牌纸,它是在...http://m.weibo.cn/client/version和手掌一样大的充电宝!!![憧憬]大容量超薄迷你充电宝¥79.9迷你+数显+快充+苹果安卓输入!!简直不要太划算!!!超多图案可选!!![憧憬]RealBubee电动吸黑头神器¥48三种模式,油性、干性、混合皮肤都可以用!!使用的时候注意不要在同一个地方停留太久,也不要拉扯肌肤[doge]干干净净的看着爽!!!http://t.cn/RDoP8Ac白菜好物推荐!!!1、葫芦美妆蛋3个¥8.82、小白鞋清洁剂2瓶,¥5.93、毛姆《月亮与六便士》¥9.94、粘毛器1器+3卷纸¥5.9起飞毛腿快充数据线2条¥6.8苹果、安卓都有,这么便宜,趁机囤着备用啊![doge]拍100x150cm尺寸!!!库存最后300件,手慢无!!![怒骂][怒骂]韩瑟收缩毛孔护肤3件tao¥9期间店的,线下专柜要189!!!现在商家亏本做冲量,据说可以在一个月内,改善痘痘,色斑,毛孔粗大等情况!!可以试试哦[笑而不语]10个刷头啊!!!性价比贼高!!![污]艾医生海外旗见店——欧阳娜娜安利过这个牌子的气垫的!很好用!!![笑而不语]1.艾医生樱花裸妆气垫bb霜¥1492.艾医生壳聚糖保湿补水套装¥2583.艾医生亮眼达人按摩眼霜¥1394.艾医生第2代美白针素颜霜¥129weekeight手提旅行包¥39能折叠的很方便,行李箱装不完的再来个旅行包!![doge]2瓶啊!!!750ml大容量!!!丝蕴无硅水润洗发水750ml*2瓶¥49旗件店的活动!!!这次有很多种组合可选啊!!有针对油性发质,受损发质,有头皮屑的,按需要选哦~[耶][耶][给力]2件!!2件!!!jeeanjoose薄款运动内衣2件¥29有背心款和细肩带(可调节)可选,无钢圈的穿起来不会有束缚感啊,睡觉也能穿的!![污]每天抖一抖~燃烧你的卡路里!![污][污]茗仟红豆薏米除湿茶320g¥7.8红豆薏米是专门祛湿的,这个解腻的效果也不错,还可以改善湿气带来的各种问题啊[憧憬][憧憬]久量USB蒸汽眼罩¥23.9买就送冰敷片!!可循环使用1000次以上哦,比买一次性的蒸汽眼罩要划算多了[笑而不语]脖子上用一粒半或两粒黄豆大小就够用了~脖子也要好好保养呢[doge]素萃美白祛斑精华小玉瓶¥49买一送一!!!到手2瓶!!!确实非常平价~我看了一下是有药监局备案的,大家不用担心[憧憬][憧憬]精华液的成分熊果苷,维C和人参精华~主打美白淡斑!!9块9!!带走2条!!!这样的机会不多啊!!![怒骂][怒骂]//@女装惠:光腿神器!!现在买月底就可以穿啦!!![污][污]背背佳驼背矫姿带¥169期间店的!!男女老少都可以用的!!我记得之前都是卖300多呢[吃瓜][吃瓜]经常做作业或者玩电脑,感觉背越来越驼,用这个可以慢慢调整过来!!http://t.cn/RgpGh1f美的家用全自动榨汁机¥79旗见店,除了榨汁还能打冰沙、磨粉,适合家用!!在外面买一杯鲜榨要一二十呢!!一个榨汁机只要79真心划算!![good][good]http://t.cn/ReJ97Iu活动今天结束!珂卡芙百搭平底鞋¥109期间店110的大卷啊!!!这歀线下要199+的啊,有35-40码可选!少女粉的超好看啊!!!后面绑带的设计也很有特色[笑而不语]kai贝印旗见店,它家的反馈真的很不错呀~1.便携式睫毛卷翘器¥22.82.专业修眉刀刮眉刀¥18.83.小号修眉刀刮眉刀¥19.84.腋毛全身刮毛刀¥17160的大卷!!!屈臣氏也有卖!!![怒骂][怒骂]COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、紧致眼部肌肤,淡化黑眼圈!坚持使用效果更好!!拍第二件0.1圆!!红心猕猴桃的营养价值挺高的!!![憧憬]树上的鱼原宿风化妆镜¥12.9少女心的粉色,下面还有小底座可以放口红、皮筋发卡之类的[吃瓜]去美容院做次小起泡要100多呢!!还是自己在家做更划算呀~[喵喵]开学宿舍用品合集,你们都准备好了吗?[doge]1.吹风机2000w¥29.992.USB电风扇¥28.53.床单被套五件套¥354.折叠小书桌¥11.8起rasa风味酸奶200ml*6瓶¥19.9超级Q的包装,有杏+燕麦/混合莓果,混合莓果口味酸酸甜甜的,燕麦口味夹着杏香味,两种风味酸奶带给你新奇体验[并不简单]999无糖冰凉薄荷糖39粒*3支¥19.9薄荷味3支,提神醒脑,清喉利咽,清新口气,商超10元一支,这里三支才19.9!!无蔗糖的的减肥也不[笑而不语]安遇安琪九分魔术裤¥33难得降价啊!!日常都是38的[跪了]九分和长裤都是一个价,加绒的贵些!S到4XL的都有,还送运险!!第二支1元,买2再送口红1支!!!rozo浪漫丝滑唇釉3支¥17直接拍两支!!!平均一支才五块多!这是他家的新品,颜色都好好看!唇釉相比口红最大的优点就是显色,然后也不那么容易掉色!!开学了,给你搭配一身小清新装~[笑而不语]1.条纹一字肩T恤34.82.半身百褶短裙303.百搭个性棒球帽9.84.简约百搭斜挎包35素萃紧致淡纹美颈霜¥24国货之光!小紅薯上一大堆好评!!经常低头一党是很容易长颈纹的,别让颈纹暴露你的年龄呐,每次用取一粒半或两粒黄豆大小,按摩吸收就行[并不简单]帝兰修眉刀20个+眉笔+眉卡¥5.9这个价格没谁了!!线下一片就是2块钱!这个是20片啊!!还送眉笔和眉卡[怒骂][怒骂]布兰奇超大浴巾+毛巾两件¥29.9这种吸水性非常好,浴巾140*70的+毛巾75*35的!!外面单单这个浴巾就是40多了!!!浴巾上还有1-12月份字母的刺绣,可以选择自己的生日月份和有意义的月份哦~~[并不简单]热门好物推荐!!素萃的精华爆款返场了!!依旧是买一送一!!!星空手表今天超级爆!!![憧憬][憧憬]1.RealBubee电动吸黑头神器¥482.星空防水手表¥583.伊贝诗.水嫩护肤套装¥9.94.素萃美白祛斑精华小玉瓶2瓶¥49你们之前都是拍的什么色号呢,来说说[doge]康佳.激光脱毛仪¥299-300大卷!!美容院去一次不止这个价!!!现在入手一个只要299!!!可多人使用,全身都可以用的!!!!基本上七八次就可以完全去掉了,奶茶东的同款都是499啊!!!卷能领5张!!!森马杨洋同款纯棉印花T恤¥19.9夏装最后一波!!好多码都没了,有喜欢的别错过啊!!![怒骂][怒骂]小熊迷你小电锅¥69600w功率,这种有点像电磁炉+锅的组合,比平时发的小电锅贵是因为功能上会比较多,特别是有预约功能,煮各种吃的有时间控制。有蒸笼的会贵一点!![并不简单]本博红外加热按摩枕¥39躺坐都可以的,按摩的时候还可以加热,冬天用超级舒服啊!!自用或者给爸妈、长辈买一个都是可以的啊!!http://t.cn/RFWK4T0你们想要的就要抓紧啦,目测库存2000多件啦!!![跪了][跪了]多功能创意置物架¥19.9起放小书桌上很好用的,很适合宿舍用,把小小的空间利用起来!![笑而不语]旅行坊水收纳密封袋¥7有各自大小的可选,出去玩的时候放些内衣内裤啥的[并不简单]依美璐洁面仪¥16.9不仅仅是个洁面仪,还是个导入仪,8档调速,真的是用过洗脸仪之后觉得脸真的干净多了[doge]全尺寸一个价!!!南极人全规格纯棉四件套¥99100%纯棉的,线下同步有售,价格比线下实惠很多,有运险![doge]奶茶东同款特.价都要99!!现在卷后59直接带走![怒骂][怒骂]澳宝化妆品旗见店,它家的一分钟焗油真的是无限回购的~[耶][耶]1.一分钟焗油护发225ml¥19.92.香氛持久留香洗发水¥12.93.西柚透亮润肤乳液¥14.94.缤纷美肌沐浴露3支¥39.9今天热门的几个裤子在这里!!你pick哪一条??[笑而不语]1、天鹅绒春秋丝袜打底裤2双¥9.92、芳卓萱宽松高腰牛仔裤¥49.93、安遇安琪九分魔术裤¥334、夏乞丐破洞打底裤¥35没错!!5.9一条运动短裤!!!买来当睡裤都值啊!!![怒骂][怒骂]要保湿就用伊贝诗![憧憬]伊贝诗洁面70g+纯肌水70ml¥9.9拍最后一项,内含:洁面70g+纯肌水70ml~~某东要一百多的呢,现在只要9.9就能拿到!!!存粹是出个u费钱了!!![怒骂][怒骂]7点半结束!!!最后10分钟!!!!乐平桃酥王¥19.9第二件1圆!!第三件不要钱!!直接拍三件啊!!!到手3斤,三口味可挑哦,酥酥的脆脆的敲好次~[憧憬]童记三利和麻辣鸡脖800g¥19.9蜜汁口味的,整整800g啊我的天!!大晚上把持不住了[舔屏][舔屏]好吉利无芯卷纸36卷¥29.9折合一卷都不到一块大洋,不漂白更健康,好吉利的纸质还不错[并不简单]回力休闲帆布鞋¥59Jackson王嘉尔同歀,男女都可以穿,颂运险!!!回力这两年来超火的,国内外好多明星都在穿,老牌子了[并不简单]今日热销榜—颜值超高的手表非常推荐[中国赞]想要头发柔顺丝滑就试试无硅油丝蕴洗发水,大牌花印、珂卡芙和森马等好东西,可要多瞧瞧[给力]1.星空防水手表¥58http://t.cn/RFY4PVx2.丝蕴无硅水润洗发水750ml*2瓶¥49http://t.cn/RFY4PMo3.花印水漾美白焕肤面莫¥39http://t.cn/RFY4Pi64.珂...http://m.weibo.cn/client/version无孔圆扣皮带¥4.9没有孔的,腰大腰小也自己好调节,搭配牛仔裤刚刚好[doge]优理氏胶原蛋白原液30ml*2瓶¥28换新装啦,折合一瓶只要14!屈臣氏,微品会同步热售价都是99一瓶[允悲]配合面霜,经华,粉底BB都可以~可修复肌肤改善肤质,原液分子量小皮肤更容易吸收哦!实时热门推荐~星空系列的手表美炸了!!福派一共到手10个刷头啊!!用到天荒地老了!!![怒骂][怒骂]1.RealBubee电动吸黑头神器¥482.星空防水手表¥583.珂卡芙百搭平底鞋¥1094.福派电动牙刷配10枚刷头¥63起拍2件!!蒛一轻薄款无痕内衣拍2件¥78.22全是夸的内衣!!真的很舒服,舒适感不输这里买的一百两百的那些,它们家内衣真的是在小荭薯爆红了!![鼓掌]笛梵洗发水400ml¥48起拍第一项起,官方期间店的活动!4.9高分好评,味道很香反馈也很不错!炫迈夹心果味口香糖28片4盒¥19.9线下同款21片的就要9.9元一盒!这次是28片一盒的啊!!![笑而不语]【山山】纳米矿晶50g+3包维达抽纸¥5.1拍最后一个选项!!冲着抽纸也要囤啊!!![憧憬]一次齐集时下热门唇色[吃瓜]玛丽黛佳网红口红套装6支69元经典国货了,一下子就可以得到6只口红了,这个套装非常适合不知道自己适合什么口红颜色的妹子,质地也是那种软软糯糯的感觉,很滋润,日常的话都完全hold住,都是很温柔很日常的颜色~[耶]01梅子色[心]这是这套里面最妖娆的颜色了,但...http://m.weibo.cn/client/version尔腾可撕粘毛器+3卷纸张¥5.9大白菜啊!!!沙发上的宠物毛,地板上的头发,衣物上的粘尘都靠它!!!银鸽手帕纸便携餐巾纸54包¥17.9银鸽50年老牌子!!一包折合3毛多,现在是出门必带纸巾的[二哈]九州树叶冬瓜荷叶茶120g¥6.9降了3块!!夏天撸串多多喝这个清清肠,吃不胖!!![哈哈]部份款式的库存不足100了,你们要速度啊!!![怒骂][怒骂]星空防水手表¥58-100大劵!!颜值超高的星空系列,想摘下星星给你,摘不到,那就把星空装进表盘送给你[笑而不语]宏丰贵邦纯手工阿胶糕260g*2¥38.9买一赠一!!!补血补气的,女生多吃对身体有好处,也可以送给妈妈吃~[并不简单]Missface妆前乳隔离霜¥19.9滋润型底妆隔离,3色号选!!紫色:适合偏黄肌肤,带有调整偏黄肤色效果绿色:适合偏红肌肤挤青春痘肌肤[憧憬][憧憬]药妆级别的,敏感肌也能用!!!热门好物推荐!!1.优理氏胶原蛋白原液2瓶¥28(买一赠一共2瓶)2.福派电动牙刷配10枚刷头¥63起3.本博红外加热按摩枕¥394.安遇安琪九分魔术裤¥33春夏宽松阔腿裤¥49.78男生女生都可以穿的很好看的工装裤!!配上帆布鞋超级帅的!!![笑而不语]花印水漾美白焕肤面莫¥39旗舰店的活动啊!!线下卖150的!![吃惊]这歀是冰淇淋质地的,延展性非常好,膏状的很好抹开,水润水润的,小红薯测评也很多说美白有效果哦!![耶][耶]露得清官方旗见店!!!1.SPF50+防晒霜88ml¥592.深层洗面乳100g¥343.挪威保湿护手霜*2¥84白菜好物推荐!!!1、大容量化妆洗漱包¥14.92、小清新陶瓷装饰花瓶¥6.83、维简便携密封小药盒2个¥34、蚂蚁大叔炸鸡排面包糠500g¥5.8换季就是换衣服了[doge]先自己挑挑,往下多翻翻看,总有你们钟意的[笑而不语]1.牛仔外tao:http://t.cn/RRrR0p62.风衣:http://t.cn/RRg58wR3.毛衣:http://t.cn/REzSeaa4.卫衣:http://t.cn/RRkyMvq5.T恤:http://t.cn/RE7xeMQ...http://m.weibo.cn/client/version睿量吃鸡神器一对装¥5.8安卓苹果通用!!!拍倒数第二项!!大吉大利,今晚吃鸡[doge]降了10块!!!史低!!!梦蝶婷卡其色lulu风衣¥129春秋都能穿的风衣!!!经典卡其色,百搭不挑身材的款啊,线下至少要个两三百吧。。还有运险傍身!!!靓真无痕内裤4条¥11.9超值4条装,折合才不到3快啊!他家质量还不错,惠惠之前买过!![笑而不语]恋意睫毛增长液¥5.8这款睫毛增长液的成分很温和,用起来不刺激,涂在睫毛上有淡淡的香味,惠惠给你们找了一个增长睫毛的方法,赶紧get起来[doge][憧憬]好久不见的雅邦出新款了!国货之光鸭【19.9】雅邦金管粉管口红他们家真的好久没做活动,这次活动来有2种可选:金管丝缎柔润,粉管丝雾哑光。想入手的宝宝们我给你们推荐几个他们家比较热门的色号:[给你小心心]01号豆沙色:不是偏土色那挂的豆沙而是水红水红的豆沙(≧∇≦)ノ很提起色显白...http://m.weibo.cn/client/version买2送1到手3盒[憧憬][憧憬]多燕瘦.复合酵素果冻拍2件¥28拍2件啊拍2件啊!!!平时一件19的,现在拍2件发3件只要28[憧憬][憧憬]而且!对便秘很有效,晚饭后吃第二天就可以正常上厕所了[笑而不语]第二件不要钱!!!!4inlook美瞳半年抛1片2件¥29第二件0元!拍两件只要29!!拍2件就要一对啦!!0~800度都有哦~[污]传说中的急救祛痘膏!!!经常冒痘的可以囤一支[good]俏精灵枕头枕芯一对装¥19.9这次枕芯枕套都有了!!!还是一对装!!!超值啊!!![憧憬]云本蒸汽热敷眼罩10片¥11.9拍后面四个选项,只要11.9到手10片!!性价比比珍视明还要高!!惠惠每天都在用,感觉眼睛不那么疼了,睡眠质量也提高了!!按摩的时候还可以加热,到时候过冬了可以用[喵喵]小狗熊老襄阳大米锅巴400g*3包,¥19.9,超市一袋就这个价,锅巴有点硬,很有嚼头,爆辣真的就是爆辣了[污]售后超给力!!30天试用,吸不出包退!!RealBubee电动吸黑头神器¥48英国皇家布比公司旗下的牌纸!!之前都是58的,FDA认证医疗设备厂家生产有保障!现在还送功能性美容头+微晶钻石美容头+过滤棉,有三种模式,油性、干性、混合皮肤都可以用!配合导出液效果更佳!http://t.cn/RDoP8Ac小白鞋清洁剂2瓶¥5.9拍最后一个选项!!秋天就是小白鞋的天下了!!![憧憬]NTN娜缇奈一次性洗脸巾¥14买2送4,送的是4包便携的,也就是拍2件只要33,到手2包正装+4包便携[耶]~比较划算了!这个纯棉不掉絮的,母婴也能用的。-400大卷啊!!!!奥克斯智能高端破壁机¥5994.9的高分!!打出来的果汁没有粗纤维,现在家里都用破壁机了,功能多又好~榨豆浆米糊也非常方便!!http://t.cn/RFWGiRs反季才有的好价啊!!!现在买了月底就能穿了!!!梵歌纳甩脂机¥19起拍最后一项!!全身都可以用,每个部位每天只需5分钟,下班回家或者在宿舍躺着站着都可以用!!哪里要瘦抖哪里![笑而不语]依蕾斯可外穿家居服¥39现在要开始买长袖的睡衣啦!!这个多款可选,还有运显!!!一套只要38!!!施华蔻赋芮深海臻耀精华发油¥49(降了10大洋)这款护发精油在屈臣氏是109一瓶的哇[允悲]特别适合头发干枯毛躁的小仙女~可以在头发半干的时候涂抹,然后再吹干,就可以感觉到头发变得特别顺滑有质感~不用担心会油的啊~吸收超快的!有喷雾款可以选择,比较适合懒人吧[允悲]7条啊!!7条!!!黛尔佳人中腰内裤7条¥19.9起拍后面的选项起!!买五送二到手7条!!!超多小清新款式可选,一条不到3块,他家的性价比高!![耶][耶]BK指甲油5ml*2瓶¥7撕拉的可直接剥,方便快捷不伤指甲!!十二星座都有!!!你们都是啥星座?[笑而不语]热门好物推荐[赞啊][赞啊]1.RealBubee电动吸黑头神器¥482.花印水漾美白焕肤面莫¥393.COM多效大眼精华眼霜¥19.94.好吉利竹浆无芯卷纸4层36卷¥29.99今天最后一天!!!抓住机会啊!!![怒骂][怒骂]珂卡芙百搭平底鞋¥109这歀线下要199+的啊,有35-40码可选!蛮修脚型的呢!哈药集团速溶暖宫红糖姜茶¥5.1史低价了!!!快快快,手慢哭啊!!生理期那几天用得上啊!!![憧憬][憧憬]洛艺轩甜美森女系发箍发带4个¥9.8饰品店一个怎么也得要10块了吧,平时化妆洗脸敷面膜用之外,还可以作为发饰戴出门[笑而不语]科满仕随手万能贴¥3.8黑科技!!想贴哪贴哪!!还能水洗反复使用!![笑而不语]素萃花染唇间呢语口红¥24中国风小黑管,颜值很高!!质地滋润细腻,上嘴不干不卡唇纹[憧憬]牡丹吻是“999平价替代”,黄皮也能显白的正红!!!4个颜色都好看!!!打底裤2条只要9.9!!!!天鹅绒春秋丝袜打底裤2双¥9.9弹性很大,黑色显瘦、肤色性感!!囤着秋天穿啊!!![憧憬]百搭小白鞋¥29搭配裤子裙子都好看!!!赠运险啊!!好久没看到这么便宜的小白鞋了!!!速度上!!![怒骂][怒骂]柏康强力挂钩20个¥5.8拍第一项,最低价!宿舍桌子上挂点小玩意也很方便!![笑而不语]碧C婴儿湿巾80抽*5包¥13.9一包平均2块多!!!2块多!!整整400片,拿来擦桌子都不心疼的!!回复@一件本分的小背心:哈哈哈哈好眼力[喵喵]//@一件本分的小背心:明明看是领卷的怎么看腿这么像我玺子,然后一打开还真是,老母亲的眼睛依然毒辣[ok]布兰奇超大浴巾+毛巾两件¥29.9浴巾140*70的+毛巾75*35的!!浴巾颜值很高哇,吸水性好,外面单单这个浴巾就是40多了!!!颜值在线!非常适合街拍!!小个子还能悄悄增高[污]100块的大卷!!!星空防水手表¥58送精美礼品盒包装+手表电池+小礼物+终身保修+运显!!很多款可选,戴上很有范儿啊!!就像把星空戴在手上,颜值超级高!!![污]http://t.cn/RFCIf3x包治百病[心]【1】chic斜挎单肩包¥29.9【2】ins超火包菱格迷你链条包¥44【3】斜跨单肩包¥24.99深夜放毒来一波[嘻嘻][嘻嘻]懒人火锅:http://t.cn/REb3CDP螺蛳粉:http://t.cn/REb3Ceg火鸡面:http://t.cn/REUyHTs牛板筋:http://t.cn/REONmWE麻辣小鱼:http://t.cn/REONmW8牛肉干:http://t.cn/REb3CeD鸭脖:http://t.cn/REUyHHv辣条:http://t.cn/REb3Ces鸡爪http://t.cn/REONmWT2瓶啊!!!750ml大容量!!![怒骂][怒骂]丝蕴水润洗发露750ml+净屑洗发露750ml¥49.9超值2瓶装,线下一瓶就要54.9了,多种组合可选[笑而不语]有针对油性发质,受损发质,头皮屑的,记得按自己的需要选哦~买就送眼影刷1套共十支!!再也不怕串色了[憧憬]rozo钻采丝绒9色眼影¥14第二件还半价!四种色系可选,平价战斗机rozo,好上色,新手也可以玩转!卫龙辣条大面筋68克*8包¥14.9折合1.86一包!!辣条真的是吃不腻[舔屏][舔屏]郑凯家的牌砸!!!DUEPLAY兔子耳朵慵懒风衣¥98哇!!想这件卫衣很久了!!居然挖到了100的大卷!![吃惊][吃惊]兔子耳朵的超可爱,可以和男朋友get情侣款[笑而不语]记得配合导出液效果更佳哦,建议一周吸个1-2次就可以了[鼓掌][鼓掌]海福盛速食粥6杯装¥24.9精炖牛肉粥、家常海鲜粥、排骨菌菇粥三种口味组合!!加开水很容易泡开!!!活动很长时间出现一次,惠惠每次必囤的,懒人的福利!回力小合集!!!今年回力真的大火啊!!!好多明星也在穿的!![憧憬]1、回力休闲帆布鞋¥592、回力高邦帆布鞋¥490点!!前15分钟第二件0元!!杰士邦零感臻薄99定制25只装拍两件/69只有前15分钟第二件0元的!!想要的自己上车[doge][doge]肤色不均、黯沉的赶紧试试!!身体也能用[笑而不语]素萃小专场~1.花染唇间呢语口红24中国风小黑管,盖子上磁扣设计,咔哒一声自动扣上,很带感~2.紧致美颈霜150ml24坚持使用配合按摩可以看到明显的效果,手法轻轻的向上提拉~居家日用品走一波~[污]1.舒蕾洗发露600*2瓶¥39.92.澳宝缤纷沐浴露3支¥39.93.蓝月亮洗衣液500g*5袋¥39.94.舒客防蛀牙膏140g*6支¥26.8有便秘的宝宝了解一下,亲测有效!!!拍2件发3盒!只要28块啊!![怒骂][怒骂]珂卡芙旗见店!!!今天最后一天了!!!都是100多的大卷啊!!![怒骂][怒骂]1.百搭韩版平底鞋1092.平底方头蝴蝶结单鞋993.一字扣粗跟凉鞋女99热门好物推荐!!!1.RealBubee电动吸黑头神器¥482.星空防水手表¥583.COM多效大眼精华眼霜¥19.94.本博红外加热按摩枕¥39起这个巨抢手,路过的不要错过了!![怒骂][怒骂]小白鞋清洁剂2瓶¥5.9拍最后一个选项,洗小白鞋特别好,还很方便!!!惠惠上次在超市看到同类型的小白鞋神器一瓶都是十几块!!!高腰直筒裤2条¥612条啊!折合一条才30[doge]多个歀式组合可以选,都是比较百搭的样式!!还有运显傍身啊!!![笑而不语]0点重磅预告!!历史最低价啊!!!隐形蓝牙耳机¥9.9送数据线,充电一次大约可以通话5~6小时!!小巧玲珑的,这个完全比普通耳机还要便宜啊!!![怒骂][怒骂]先领卷加车,0点拍!!!充电防爆热水袋¥9.8虽然现在可能还用不上,但是可以趁好价先囤着!到了冬天都卖20多了!!![怒骂][怒骂]先领卷加车,0点拍!!修正美白祛斑霜30g¥9史低好价回来了!!!都是草本配方!还持国家CFDA功效产品特征!!药店里一支都要好几十的,有效改善色斑和晒斑[憧憬][憧憬]直降了6个大洋!!之前都是39的!!魔术黑色打底裤¥33弹力大,还特别显瘦!!惠惠这边收到的反馈很不错的,这个还有运险!![耶][耶]0点!!前十分钟第二件0元!!强生婴儿牛奶沐浴露拍两件/40.9只有前十分钟第二件0元!!目测库存只有3000件的!!想要的记得蹲点!!强生的沐浴露真的一生推啊!![怒骂][怒骂]一次性口罩50只¥5.1一次性口罩,好价回归了!!防尘防雾霾还防晒!先领卷加车,0点拍!!妃琳卡持久保湿口红5支¥9.9少女心爆棚的口红礼盒!!全都是热门色号!不管你是白皮、黄皮还是黑皮,总有一个颜色适合你!!这个上次贼抢手,抢了十几万件[怒骂][怒骂]0点聚划算,基本都是要拼手速的!!赶紧看看要哪些!【前15分钟第2件0元】杰士邦.零感臻薄避孕套http://t.cn/RFHwWlJ【前1小时第2件0元】美迪惠尔.三重奏安瓶精华液http://t.cn/RFHwWsp【前30秒17.90】凯蒂猫.女童纯棉内裤4条http://t.cn/RFHwlcA【前3000件9.90】远港.冬季居家保暖棉拖鞋...http://m.weibo.cn/client/version先领卷加车,0点拍!!!草木之心隔离霜¥29隔离霜中的平价战斗机!!三个色号选择,每个颜se对应不同的功效!!!紫色更提亮,绿色更遮瑕,自然色显白!!用过的好坏都来说说!![笑而不语]薇诺娜化妆品旗J店,敏感肌亲妈啊~[good]1.透明质酸修护面膜3片装¥962.透明质酸修护洁面凝胶¥1283.透明质酸修护精华水¥168康夫家用小型功率电吹风¥27.91200w小功率,不会跳闸,宿舍家用都可以的呢~~[憧憬]有100的大卷哦!!谁戴谁好看!!!配上手链一起更美[污]六张图全都是买家秀[喵喵]好看又好闻的香薰来啦~~先领卷加车,0点拍!!!米尚.童趣几何茧型中长款羽绒服¥299400大券啊!!还是官旗的活动,去年冬天疯抢啊!!!反馈一直都很不错,这个线下超级贵的啊!![跪了][跪了]先领卷加车,0点拍!高姿雪耳6件组合¥14.9起旗舰店哒!!第二个选项!含:晒后修复啫喱60g+保湿水10ml+保湿乳10g+水活面膜3片!这些所有只要14.9!![吃惊][吃惊]绝对超值啊!平时三片面膜都不止这个价了啊!![怒骂][怒骂]刚刚发现这个活动今天结束啊!!!!还有最后半小时的机会!!![抓狂][抓狂]最生活家用纯棉毛巾¥14.9小米投资的毛巾品牌,G20指定毛巾,吸水性和抗菌抗螨的效果都很好的,性价比超级高!!!回复@熊宝宝Dylan_:哈哈哈冲鸭!!![污][污]//@熊宝宝Dylan_:每次看到这样的都可激动了[允悲]天鹅绒春秋丝袜打底裤2双¥9.9初秋就差不多可以穿了!!!9.9到手2条打底裤简直是白菜价啊!!![怒骂][怒骂]先领券加车,0点拍!!慕婷空气棉柔卫生巾4盒40片¥29.85拍2件!到手4盒共40片,这个牌子据说很好用,不含荧光剂的,超薄空气棉,反馈挺好的,每月都要用的,趁活动囤!![憧憬]厚成人防滑塑料衣架20个¥14.9开学囤一波,这种衣架不容易弯,可以挂冬天的大衣!!超级百搭的小白鞋只要29啊!!!!还有运显!!!库存在飞!!!![怒骂][怒骂]先领券加车,0点拍!!迪凯瑞黄金鱼子精华原液30ml39.9某东上一支要98!!主打改善肤色暗沉,延缓皮肤衰老[耶]对肌肤暗淡、干燥、松弛都有改善效果,这个还带抗氧化的功效,这个晚上用完第二天起床皮肤水嫩嫩的,效果棒棒滴![赞]先领卷加车,0点拍!!老北京祛湿足贴50贴¥9.8旗舰店哒!!之前最低都要13的啊!!!祛湿排毒,改善睡眠,晚上贴,早上撕,非常方便!![给力][给力]券可以领5张!!森马男士T恤¥19.9超多印花款可挑的!!森马的质量还不错,线下还是很贵的,可以给家里的男同胞囤一波!![笑而不语]最后20分钟!!!这个粉色真的很俏皮了!!!错过了就只能去线下买199的了[怒骂][怒骂]第二件半价,第三件0!!直接拍三件到手90片!千纤草脸部卸妆巾30片¥37.35拍3件!!!这种卸妆巾片装的,出门携带非常方便了!!!先领卷加车,0点拍!!!楼兰蜜语新疆一等灰枣500g*2袋¥19.9期间店的!!灰枣要比一般红枣稍小一些,但是会更甜哦!!女生可以多吃些枣,补血养气[并不简单]丁家宜参肌水漾护肤套装¥39期间店的!!!凤凰带盐!!!库存就300件!!![跪了][跪了]妙钻港风平底街拍豆豆鞋¥29.9可以穿三季的单鞋,码子偏小,拍的时候可以拍大一码,有运险的!!!白菜好物推荐!!!1、鸥聆尚平板手机支架¥2.92、旋转亚克力化妆品收纳盒¥9.8起3、睿量吃鸡神器一对装¥5.84、imint薄荷糖润喉糖3盒装¥14.9实时热门好物!!!黑头神器神器爆款返场!!!花印面膜线下150啊!!![怒骂][怒骂]1.星空防水手表¥582.伊贝诗.水嫩护肤套装¥9.93.RealBubee电动吸黑头神器¥484.花印水漾美白焕肤面莫¥39中公教育.公务员考试用书4本¥9.9无卷直接拍的!!!4本只要9.9啊!!!超值750ml*2瓶大容量,囤一次够用大半年了!![污][污]回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!这个帆布鞋第一次来啊,男女款、高低帮都有呢!![doge]热门好物推荐!!好吉利的纸质非常好,可以囤一波!!![怒骂][怒骂]1、好吉利无芯卷纸36卷¥29.92、宏丰贵邦纯手工阿胶糕260g*2¥38.93、裸睡水洗棉四件套¥394、露得清防晒霜spf50¥58先领券加车,0点拍!!LG安宝笛美肌香水沐浴露500g¥29世界顶级品牌LG生活集团旗下!!自用款!!质地非常温和!清洁力也很好!持久留香!屈臣氏69一瓶!!先领卷加车,0点拍!!!BEELY滋润乳木果护手霜4支¥10.8很润但是不油腻的护手霜!!买一就发4支!!可以用好久了!!!有160的大卷!!!COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、假姓皱纹、笑纹,紧致眼部肌肤,淡化黑眼圈!这个点还没睡的夜猫子建议入!!![doge]先领券加车,0点拍!!全尺寸一个价!![给力]全尺寸冬被加厚保暖被芯被褥6斤¥59上次有很多小可爱没有抢到的!!这次蹲好了!!先往大大厚的拍!!!这么划算还有运显啊!!![怒骂][怒骂]0点浮力汇总—热水袋昨天没有抢到的快来!!草木之心隔离和妃琳卡口红爆歀返场,今天0点很多好东西,可要多翻翻看看[中国赞]1.充电防爆热水袋¥9.8http://t.cn/RFHSfYp2.草木之心隔离霜¥29http://t.cn/RFHSfQL3.妃琳卡持久保湿口红5支¥9.9http://t.cn/RFHSfR64.隐形蓝牙耳机¥9...http://m.weibo.cn/client/version今天的爆款了解下!!!珂卡芙0点就过期啊!!![跪了][跪了]
86 |
87 | 素萃昵语口红¥24国产口红,口碑好到爆[憧憬],他家这次又多出了4个新色号[太开心],颜色超美的,小红薯上一大堆好评,惠惠这收到的反馈也相当不错的[憧憬] 【霸王】育发防脱液80ml*2瓶¥7.9这个是2瓶洗发水的组合!!!小瓶的也方便出差旅行带[憧憬][憧憬]防脱发啊!!! 四个系列一个价,按发质来啊!!! 开抢,现在拍2件20.2!!![怒骂] 回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!这个帆布鞋第一次来啊,也是男女歀都有[并不简单] 新券!! 星空防水手表¥58100大劵!!!磁铁带的,吸铁石吸的很牢固,星空系列,是不是感觉把银河带在手上了[喵喵] 白菜价,上,正好放宿舍床上[憧憬] 回复@小小女王xff:拯救90后脱发少女[憧憬][憧憬]//@小小女王xff:亲自测评,真的有效果。两个月不到的样子,长了四五厘米 10.8的热水袋爆了!!爆了啊!!照这个速度很难撑明天的,你们赶紧去过看看[允悲]。看完就睡吧,晚安了[拜拜] 【今日重点推荐宝贝】 1.COM烟酰胺原液30ml*2瓶¥19.9http://t.cn/RFpcsvH 2.opus小清新文艺保温杯¥39http://t.cn/RFp3tp9 3.北京同仁堂蜂蜜350g*3件¥39.9http://t.cn/RFp3tpS 4.安遇安琪九分魔术裤¥33http://t.cn/RFp3tpa 刷新一下少几十件,这个2000件也不知道能不撑到明天[允悲] 盼思美充电防爆热水袋¥10.8会过日子已经开始囤货过冬了[doge]上次没抢到南极人的记得抢这个!只有2000件,抢的快的!!![怒骂] 反季好价!!! 充电防爆热水袋,10.8入 炒鸡多款可选!到了冬天可就没这价了 婴儿肌补水敏感肌面莫28片¥74日本销量第一面mo,真很给力的活动!!!这款面mo主打的是快速面mo,所以jing华比一般的少,不要敷很长时间,一般8到10分钟!!挺清爽的[并不简单] 花印水漾美白焕肤面莫¥39期间店的60券!线下一瓶100+啊!!!这貌似是第一次来?美白不是一天两天的事,要坚持使用![并不简单] 0点必抢!!!! 1.丝蕴官方店无硅水润洗发露750ml*2¥49.9 2.英潮虎邦魔鬼辣椒酱,拍2件¥20.2 3.霸王育发防脱液80ml*2瓶¥7.9 4.花印水漾美白焕肤面膜¥39 学过很多技能,发现最有用的技能是“想开点”。[摊手] [给力][给力]-100的大券!! [给力][给力]-100的大券!! TWAR/时光战车星空手表¥58这是磁铁表带的,看着很有质感啊,戴脱非常方便,看完视频你是不是已经沦陷了?[笑而不语] http://t.cn/RFCIf3xhttp://t.cn/RFMatqo 到手2瓶!!! COM烟酰胺原液30ml*2瓶¥19.9旗见店150的大卷!!不仅可以修复受损的角质层脂质屏障,还可以提亮肤色!!美白啊[憧憬][憧憬]只要一滴就够涂整脸了,2瓶用半年啊[doge][doge] opus小清新文艺保温杯¥39造型Q萌!!400ml的容量也刚刚好[笑而不语]昨天有小可爱反kui很不错的!!保温效果也好[good] 国货之光[中国赞][中国赞] 素萃昵语口红¥24这次se号很齐全,看来有所准备啊[笑而不语][笑而不语]墙裂安利1#牡丹吻,小可爱的首选哦~超正的正红色,无论是黄皮黑皮都能hold住![憧憬][憧憬]一支才20多,星价比杠杠滴!!! 【霸王】育发防脱液80ml*2瓶¥7.9拍第二项!!2瓶洗发水的组合!!专为脱发人群研制[笑而不语]熬夜党快备着!! 丝蕴无硅水润洗发露750ml*2¥49.9 可以调节头皮水油平衡,适合毛躁脆弱偏油性发质,超值的750ml家庭装2大瓶,拍一次可以用大半年了[憧憬][憧憬]还有润发乳的套装可选!! 严济堂褪黑素维生素B6药片*60片¥5睡前半小时1片,可以让你安心入睡!!这是有助于睡眠的不是美白的啊[doge] 蒛一轻薄款无痕内衣拍2件¥78.22日系少女风,很多小伙伴买了都说穿着很舒服的~~ABC杯都有,日常单拍一件是49的,惠惠收到的反馈很不错的[并不简单] 霸王育发防脱液80ml*2瓶¥7.9拍第二项!!2瓶洗发水的组合!!专为脱发人群研制,熬夜党必备![doge] 安遇安琪九分魔术裤¥33她家竟然破天荒的降了5块钱!![吃惊][吃惊]黑色也很百搭款,而且重点很显瘦呀!! 海南青柠檬3斤¥9.9第二件5元!!拍2件到手6斤只要14.9!!线下一个都是好几块,惠惠在小红薯上看到柠檬+百香果泡水喝可以美白,好多人试了发现真的有效!!![耶][耶] 素萃小专场~ 1.花染唇间呢语口红24 中国风小黑管,盖子上磁扣设计,咔哒一声自动扣上,很带感~ 2.紧致美颈霜150ml24 坚持使用配合按摩可以看到明显的效果,手法轻轻的向上提拉~ 拍一送一,到手2瓶!!! COM烟酰胺原液30ml*2瓶¥19.9150的土豪券!!!烟酰胺是公认的皮肤抗老化成份,不仅可以修复受损的角质层脂质屏障,还可以提亮肤色[并不简单]每次只要1滴就够了[憧憬][憧憬]这2瓶不是可以用好几个月了!!! 注意:敏感肌的建议可以先在耳后或局部做测试,没有问题的...http://m.weibo.cn/client/version 花印卸妆水99ml¥19温和不刺激,敏感肌、卸眼唇都可以!!!99ml也很适合短期出行带着[憧憬][憧憬]用过都说好!!! 超级吸睛的手表,是不是感觉把银河带在手上了!![污] 千颂伊同款!! W.DRESSROOM喷雾香氛100ml¥39这次是100ml的,还送小喷瓶!吃完火锅,烧烤什么的,喷一喷,瞬间祛味!只有水蜜桃跟四月棉2个味道,水蜜桃是那种甜甜的味道,四月棉就像冬日里阳光的味道~ 第二件9.9!! 英潮魔鬼特辣鲜椒酱210g¥11.8两件到手21.7!!大胃王密子君推荐过,真的特别辣,不能吃辣的慎重啊[喵喵] 10点巨划蒜第一波~有好几个三只松鼠哦~还有好吃的大米,护肤~需要的蹲 1.【前500双,9.99】冬季保暖情侣包跟毛毛棉拖鞋 http://t.cn/RFOVpLg 2.【前10分钟第2件0元,拍2件28.8】贝贝南瓜2.5斤 http://t.cn/RFOVpVe 3.【前1000名买一送一,118】三只松鼠中秋大礼包1533g http://t.cn/RFOVpaE 4.【...http://m.weibo.cn/client/version [给力][给力]券可以领5张!! 森马男士T恤¥19.9超多印花款可挑的!!森马的质量还不错,线下还是很贵的,可以给家里的男同胞囤一波!![笑而不语] 喜家家收纳袋¥6.9有横版和竖版两个款,夏天的衣服马上就可以收起来了,比直接放在衣柜里更加干净卫生呢[并不简单] 买1送1共2瓶!! 优理氏胶原蛋白原液2瓶¥28这是新升级的!包装也高级了很多啊[憧憬]屈臣氏~唯品会99元1瓶,活动买1送1,一瓶只要14!还能配合bb霜使用,可以让妆容更自然服帖~ byphasse温和保湿卸妆水500ml¥54日常价一瓶都要59的啊!!平价贝德玛,温和无刺激的,敏感肌也可以使用!!惠惠已经空瓶好几个了[憧憬] 火烈鸟大白杆浓密睫毛膏¥14.9国货之光火烈鸟,他家口碑挺不错的!!惠惠之前买过他家的星座款,超好用,完全没有苍蝇腿,而且不晕染!!这个性价比更高啊!!! 彩兹复古磨砂小皮鞋¥39.9搭配裙子或者裤子都是非常美的,马上秋天就可以穿了,还有运显傍身!!![笑而不语] 10点巨划算,三只松鼠专场!! 1.【前1小时39.9】山核桃仁155g http://t.cn/RFOxIzK 2.【前1小时14.9】对对虾50g http://t.cn/RFOxIxw 3.【前1小时24.9】风干牛肉120g http://t.cn/RFOxIC5...http://m.weibo.cn/client/version 超值的750ml家庭装2大瓶,拍一次可以用大半年了吧!![doge] 艾瑞泽电热溶胶枪¥5.9拍下还送10根胶棒!!平时自己喜欢做手工diy之类的可以入[doge] 洛艺轩可爱小清新发圈8件套¥3.8拍前五个选项!!!线下这种样式的好几块一根了!!现在3.8自己到手8根啊!![憧憬] 10点聚划蒜~杂七杂八走一波~ 1.【前5分钟第2件1元】大别山散养乌骨母鸡 http://t.cn/RFO66xe 2.【第2件0.1元】誉福园蒲江红心猕猴桃10个 http://t.cn/RFO66pg 3.【7.8】茗仟红豆薏米芡实茶 http://t.cn/RFO66El...http://m.weibo.cn/client/version LG派缤成人牙膏按压式285g*2瓶¥39.8你们的老公邓论带盐的[污]超大容量285g,按压式设计非常方便了,含有珍贵竹盐成分,牙龈爱出血的可以试试,让口气更清新![耶] 10点必抢啊!!! 伊贝诗洁面70g+纯肌水70ml¥9.9期间店的,洁面+纯肌水!!超级大白菜啊!!!先领卷加车!!!10点拍最后一项!!手慢无的!!![抓狂][抓狂] 10点!!!前一小时第二件半价!! snp燕窝补水眼膜*30对2件118.5拍两件相当于到手60对!!海外旗舰店的!!超强补水,镇定肌肤淡化细纹,嘴部周围干燥的部位也可以用!!![憧憬] 10点!!!第二件0元!!仅有2000件!![怒骂][怒骂] 蓓昂斯蜂蜜果酸滋润保湿身体乳拍2件59+税折合一瓶不到三十!![吃惊]这果酸的,对身上有痘痘的宝宝很友好,水润好吸收,不会有黏腻感!!据说还可以改善身体细纹和鸡皮[憧憬][憧憬] 抢手啊!!!!这个价真的没谁了!!![怒骂][怒骂] 严济堂褪黑素维生素B6药片*60片¥5浙江400年老字号!!!期间店的活动,可以改善睡眠质量,调节生物钟,睡眠不好经常失眠的可以试试这个~ 印尼进口丽芝士奶酪威化饼干5包¥12.9起推荐奶酪味的!!!这个超市一包都10块了,这个有5包!!芝士就是力量!![色] 丫眯乐云南丽江特铲鲜花饼400g¥12.8玫瑰、抹茶、紫薯3种口味组合,也有单玫瑰的!!吃过最好吃的鲜花饼了,和轩庆的比,轩庆的更甜一些,不喜欢很甜的这个正好[馋嘴] 热门好物推荐!!!这次的星空手表颜值真的很高了!!!花印的面膜活动不是很多哦!!! 1.COM烟酰胺原液30ml*2瓶¥19.9 2.星空防水手表¥58 3.花印水漾美白面莫160g¥39 4.丝蕴无硅水润洗发露750ml+无硅净屑洗发露750ml¥49.9 [给力][给力]-100的大券!! [给力][给力]-100的大券!! TWAR/时光战车星空手表¥58美炸了有木有!!星空系列,颜值逆天啊!!这是磁铁表带的,看着很有质感啊,戴脱非常方便~[污] http://t.cn/RFCIf3x 花印水漾美白面莫160g¥39药监局认证,期间店的第一次来活动哦~~据说美白效果蛮好的,线下一瓶都是100+的[跪了][跪了] 澳宝一分钟焗油护发素225ml¥19.9这个是免蒸的非常方便,洗头后直接抹头发上停留5分钟,头发会特别的柔顺!!几乎适合所有发质,强烈推荐给常染烫及头发受损的宝宝~[笑而不语] 先领卷加车,10点拍!!! 华美月饼礼盒¥14.8拍第一个选项,九饼7味的!到点会改价!超市同款居然都要60+!![吃惊][吃惊]中秋提前囤一波!!! 先领券加车,10点拍!! 美丽家秋广式月饼¥29.9旗间店的活动呢~2种包装可选,粉色和蓝色[笑而不语][笑而不语]作为手礼也不错哦,跟传统的月饼相比会细腻一些呢,颜值真心高!! 反馈都很好啊!!一年四季都可以穿的!!!关键是显瘦!!显瘦!!显瘦!!![憧憬] 10点!!!第二件0元!!一定要拍两件啊[憧憬] 蓓昂斯洗面奶拍两件49超值500ml*2瓶!!0皂基的无泡沫型,很温和!很适合干皮和敏感肌的宝宝使用!还有控油+祛痘的效果~记得拍两件啊啊!! 回复@彭亚茹是女生:现在可以拍!!!有70的大卷!!!拍最后一项!!超值2件tao哦!!!!![憧憬]//@彭亚茹是女生:没了 前一小时第二件半价!!拍2件共60对!!!熬夜党或经常对着电脑的人群必备!!! 7.9抢霸王!!速度速度!! 拍第二项,霸王育发防脱洗发水80ml*2瓶只要7.9!!从此不再惧怕脱发!! 吃货们,开抢啦!!![色][色] 加送50ml洗发水!! 舒蕾山茶花洗发水套装¥39.9有600ml*2瓶洗发水和600洗+400护两个选项可选!!拍下还送50ml洗发水,正好出门携带挺方便的!![憧憬]平时这个价一瓶都买不到啊!!! 不含酒精的无泪配方,敏感肌都可以用! 韩后绿茶卸妆水300ml+150ml¥39.9拍150ml要就要19.9了啊!拍300ml的会直接赠150ml+20ml+卸妆棉50片,所以拍300ml的会更划算哦~[污][污] 本博加热8D按摩枕¥39躺坐两用的!按摩的时候还可以加热,特别是冬天的时候用这热热的、暖暖的,超舒服~[笑而不语] 蓓昂斯专场!!! 1.蓓昂斯蜂蜜果酸滋润保湿身体乳,第二件0元!!仅有2000件!拍2件59+税 2.蓓昂斯洗面奶,第二件0元!拍两件49 3.byphasse蓓昂斯卸妆水500ml¥54 10点必抢啊!!! 伊贝诗水嫩护肤水嫩两件¥9.9官旗店的活动!拍最后一项,内含:洁面70g+纯肌水70ml某东要一百多的呢,学生党必入的补水大白菜!!![抓狂][抓狂] 10点活动!!第二件半圿!! 欧莱雅的一次性染发喷雾拍2件103.5官旗店的,李宇春袋盐的!!在小红薯上去get了一下使用步骤:在干发上用,距离发梢15cm处均匀喷洒,静等一分钟,干透后梳理头发就可以啦!!超简单的!!![耶][耶]因为是一次性的,所以喷一次只能管一天哦,很适合着急出门用...http://m.weibo.cn/client/version 素萃美颈霜¥24经典国货之光,小紅薯上一大堆好评[doge]可预防颈纹,敏感肌肤也可以用的,每次取黄豆大小就可以[doge]搭配按摩手法,都说去颈纹效果挺好的,一定要坚持使用哦[笑而不语][笑而不语] 历史最低价!!!! 艾瑞泽电热溶胶枪+颂10根胶棒¥5.9拍第一项!!diy做些手工艺也好啊,也可以黏黏补补~[笑而不语] 拍2件啊!!!仅有2000件!!速度!! 期间店70的大卷啊!!!库存在飞!!!!都入了没???[怒骂][怒骂] 中大号公仔20-55cm¥2.8起快快快,抢手系列!!!比夹娃娃划算!!! 素浴法国无火香薰精油¥9.9搭配藤条手工干花装饰,天然无火香薰,植物萃取,味道淡淡的可以放卧室,大概能用30~40天左右哟~当做摆饰也很好看的[笑而不语] [给力][给力]热门必抢好物~伊贝诗真的是超级大白菜啊!!这次还是旗舰店的活动!!错过拍大腿啊!!!! 1.蓓昂斯蜂蜜果酸身体乳¥78.97(拍2件) 2.伊贝诗水嫩护肤水嫩两件¥9.9(拍最后一项) 3.星空防水手表¥58 4.优理氏胶原蛋白原液2瓶¥28(买1送1共2瓶) 这款一瓶整整500ml,这次两瓶到手啊!![憧憬] 第一次来活动!!线下一瓶150!!! 花印水漾美白焕肤面莫¥39这款是冰淇淋质地的延展性非常好,看评论都说是“敷出看得见的白”,不过美白不是一天两天的事,坚持使用会看到效果哈~[吃瓜] 2瓶啊!!!750ml大容量!!! 丝蕴无硅水润洗发水750ml*2瓶¥49近一两年大热的无硅油洗发水,功效是防止毛孔堵塞,去油防脱发,性价比很高,洗完后头发很柔顺丝滑!!有4款组合可选,线下一瓶就是54.9了[跪了][跪了] 某东要一百多的呢,现在只要9.9!!![怒骂][怒骂] 伊贝诗水嫩护肤水嫩两件¥9.9官旗间店的活动哦~拍最后一项,含:洁面70g+纯肌水70ml!!超市适合学生党了!!!正好水和洁面都用得很快!!! 110的土豪券!! 芳卓萱牛仔裤¥49两色可选!码数齐全!这种宽松的比普通的窄脚裤更能修饰腿型,也不会显得过于肥大[并不简单],还送运险的放心!!!! 直接拍一件就到手2瓶!!折合也就十大洋一瓶了,简直不要太划算!别看它小小一瓶,功效绝对的很棒的啊! 森马杨洋同款纯棉印花T恤¥19.9夏装最后一波!!码子还是全的,卷能领5张!!!抓住夏天的尾巴[笑而不语] 洛艺轩甜美森女系发箍发带4个¥9.8多款可选,洗脸洗澡化妆的时候能用上,出门当做发饰也不错[笑而不语] 到手两条啊!!两条!!! 布兰奇.浴巾2条¥29.9浴巾140*70的+毛巾75*35的!!这种吸水性非常好,这个浴巾上绣的英文还是对应的1-12月份,可以选择自己的生日月份和有意义的月份哦[喵喵] 最后10分钟了!!!记得拍2件!!含果酸和蜂蜜啊!!!鸡皮肤的也可以入手的哦!!! 一次性口罩50只¥5.1一年四季常备!!防晒、防雾霾、耍帅都可以![doge] 这个价格也是低到让你们开心啊!!!也就一个U费的呢!!!赶紧上啊[抓狂] 买一颂一!! 维简便携密封小药盒¥3拍前4个选项啊,买一送一同款,共2个!!!平时吃维生素、蔓越莓胶囊、葡萄籽之类的,都可以放小药盒里随身带 -150的大卷!! 马连奴奥兰迪格纹斜挎包¥49旗见店的,这个牌子的包实体店挺贵的,至少150+以上!!黑色的经典百搭,粉色的少女感十足!!更喜欢哪个颜色[并不简单] 恋意物滋养眼睫毛增长液¥5.8有4.9高分口碑,促进睫毛发育,长出浓密纤长真睫毛!!惠惠特意咨询了商家,建议3瓶一周期的效果会更好[笑而不语] 第二件0.1!!拍2件!!! 红心柚子5斤¥24.8每次到了月饼节都必不可少的柚子,[馋嘴]这次还是红心的,红心的要比白心的更甜啊!![笑而不语] 蓓昂斯玫瑰精华爽肤水500ml*2件¥49西班牙进口!!便宜又大碗500ml装,只要49到手两大瓶啊!!小P老师也有安利过!这款的香味是比较浓郁的,但是没有酒精没有激素没有矿物油,敏感肌也可以用呢。可以做水膜湿敷或者放在喷壶里面当补水喷雾[污] http://t.cn/RFt02by 赠10枚原装刷头!!! 福派电动牙刷配10枚刷头¥63起拍最后2个选项,粉色和白色可选的~配10个刷头啊我的天!![给力]虽然惠惠之前在史低59的时候买的,但也只有5个刷牙[允悲][允悲]这个简直太划算了吧,可以用到天荒地老了[跪了][跪了] 原宿休闲帆布鞋¥24.8百搭港风板鞋来啦~~配个直筒裤和堆堆袜超级好看!![憧憬] 曼秀雷敦修色润唇膏¥19.9传说中秒S一切大牌唇膏的平价有色润唇膏!!颜色都很日常[喵喵]薄涂的时候原唇色!厚涂会显色但是又不会很夸张!因为这款是有色润唇膏!而且水润度不错,素颜都可以用的~~~ 110的大卷! 珂卡芙百搭平底鞋¥109期间店110的大卷啊!!!线下现在打折也要199一双的[摊手]预售的,只有200件!!! 热门好物推荐!!!绝对不能错过的星空手表!这次面膜、洗发水和卸妆水都可以囤个够了!!都是天天会用到的[笑而不语] 1、星空防水手表¥58 2、花印水漾美白焕肤面莫¥39 3、丝蕴无硅水润洗发水750ml*2瓶¥49 4、byphasse蓓昂斯卸妆水500ml¥54 指尖香乳酸菌夹心吐司面包1kg¥20.8面包松软香糯,里面的夹心甜而不腻!!来不及吃早饭来一包这个刚刚好[舔屏] 实时热门推荐!!!伊贝诗10点到现在已经疯抢12万的销量了,而且这个价格也是低到让你们开心啊!!!换号来多囤吧!![憧憬] 1.伊贝诗水嫩护肤水嫩两件¥9.9(拍最后一项) 2.素萃美颈霜¥24 3.森马杨洋同款纯棉印花T恤¥19.9 4.星空防水手表¥58 高腰直筒裤2条¥612条啊!折合一条才30[doge]多个歀式组合可以选,都是比较百搭的样式!!还有运显傍身啊!!! 英国HB荷柏瑞保健品专场[doge] 英国百年的健康品牌啊,每款效果都不一样哎,自己挑一下了~~ 1,葡萄籽精华胶囊50粒¥59 葡萄籽是他家的爆款啊!卖断货的,能保湿美白,抗辐射,抗衰,做冻龄少女[doge] 2,水解胶原蛋白180片¥114 胶原蛋白的效果就是延缓衰老的,逆转肌龄,[doge]适合25岁以上的妹...http://m.weibo.cn/client/version 洁面+纯肌水!!超级大白菜啊!!相当于出个u费免费送了!!!![怒骂][怒骂] -400的大卷啊!! -400的大卷啊!! 奥克斯多功能破壁机¥599是破壁机!!!4.9的高分!!打出来的果汁没有粗纤维,基本都是细腻的果汁,居家必备好货~榨豆浆米糊也非常方便!!这个价线下绝对是买不到的!!![怒骂]http://t.cn/RFWGiRs 超美网红拍照背景纱70*100cm¥6.9起拍照拍视频的背景神器!!!美甲、静物、自拍4色可选!拍照片出来的效果真的是非常好看啦[耶][耶] 红豆中腰内裤4条¥29.8多色可选,目前发过的所有内裤里反馈最好的,毕竟大牌,几乎0差评!!内裤一定要勤洗勤换啊!! 优可柔一次性棉柔巾¥7.9第二件5快!!可以当小毛巾用,还可以当卸妆棉用,洗脸干净卫生,不像毛巾一样容易滋生细菌,很适合敏感肌了! 白送了!!!速度上!!!最小的是娃娃机同款,最贵的也只要4.9!!手慢无!!! popmagic4inlook美瞳小直径半年抛1片¥29第二件不要钱!!拍2件只要29!!这个价半年抛的简直不要太划算!!![憧憬] 回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!!这次高帮和低帮的都有!!! 粉色小猪苹果手机壳¥9.9这个很可爱啊,是时候换手机壳了[笑而不语] -500巨卷!!!有运险傍身!!! 法琳黛中长款双面呢外套¥299多色可选,双面呢!!轻薄又保暖[憧憬]直筒型的版型,遮肉显瘦!!线下双面呢都上千了[doge] 被称为平价版贝德玛!!!反馈还是很不错的!!! 秋季休闲运动裤子¥19.9侧面的白色条纹在视觉上可以修饰腿型哦!!穿着舒适又显瘦啊!!![笑而不语] 300的大卷!!!! 康佳.激光脱毛仪¥299史低啊!!!惠惠买的时候是399呢[跪了][跪了]美容院去一次不止这个价!!!很多宝宝都说用几次就开始长得很慢了,用前记得把毛都剃掉!!!基本上七八次就可以完全去掉了,奶茶东的同款都是499啊[吃瓜][吃瓜] 线下一瓶54.9的啊!!我们卷后2瓶只要49.9哦[污][污] -90元大券!商家吐血冲浪,量够即停[怒骂] 韩瑟收缩毛孔护肤3件tao¥9拍第一个!!线下专柜要189[怒骂],据说可以在一个月内,改善痘痘,色斑,毛孔粗大等情况!难得有的好价啊!!! 幼小型宠物小包袱卖萌枕头围巾¥16这个敲可爱,给家里的喵星人买个吧[哈哈] 国货之光——素萃昵语口红24 这款是很有质感的古风包装,磁铁亮黑红管,膏体上还有印花,四个颜色的色号名字超级有古韵[耶] 给你们安利下色号! 01牡丹吻DIOR999的平价替代试色,很正很正的正红色,如果你还没有一支显白的正红色,这支是不二选择~ 02凌霄歌暖橘调的红~很适合夏天的元气暖橘,...http://m.weibo.cn/client/version 送支架!!! 丽亚斯葫芦美妆蛋*3个装¥8.8干湿两用,有葫芦/水滴/斜切,干湿两用,打湿上妆比较不吸粉还更加服帖的![笑而不语] 最生活小米毛巾¥14.9小米投资的品牌,G20指定毛巾,尺寸34*76cm,这个我的到了,真的超厚超柔软啊[憧憬][憧憬]准备用来擦头发!!听说3秒吸水[笑而不语] 贞索厚底马丁靴¥49.9有3CM跟高+1CM内增高,小个子穿也毫无压力,简单大气的样式,还有运显傍身!![doge] 本博红外加热按摩枕¥39躺坐都可以的,按摩的时候还可以加热,进行美美的热疗按摩,很舒服!可以舒缓酸痛点神经,可以长辈送一个!![good][good]http://t.cn/RFWK4T0 快快快,第二件不要钱!!! 御泥坊黑面膜42片¥76.9一定要拍2件!!!到手42片!!!喵超的活动,快快快,赶紧啪2件,啪下不减活动结束!!! 猪太帅毛茸棉拖鞋¥7.99这种的鞋底稍微有点厚度,不容易踩到水,现在趁好价提前备着[doge] 宏丰贵邦纯手工阿胶糕260g*2¥38.9期间店的,买一送一,两盒装!!正好一盒自己吃一盒给老妈,补血补气的,李盒的送人也不错[并不简单] 桌面收纳文件架¥15.8宿舍东西太多太乱,就需要这个来拯救!![并不简单] -100大劵!! 星空防水手表¥58美炸了有木有!!颜值超高的时空手表,感觉像是手上戴了整个银河系,有运显的,可以放心入[憧憬][憧憬][憧憬] http://t.cn/RFCIf3x 无孔圆扣皮带¥4.9无孔的更好调节,搭配牛仔裤刚刚好[doge] 好吉利无芯卷纸36卷¥29.99日常消耗品,一卷才8毛3啊,趁着活动多囤点![笑而不语] 荔园海鸭蛋雪媚娘红豆蛋黄酥55g*6枚¥24.9反馈最好的蛋黄酥!平时都是28的!!!一层薄薄的雪媚娘皮然后就是红豆馅最后就是大大颗的海鸭蛋,口感丰富[色] 猫人内衣¥29.9前扣的,方便就不用说了[笑而不语]还聚拢!!猫人的内衣质量一直不错啊!! 天鹅绒春秋丝袜打底裤2双¥9.9初秋就差不多可以穿了!!!9.9到手2条打底裤简直是白菜价啊!!![怒骂][怒骂] 白菜好物推荐!!!伊贝诗还在疯抢!!!9.9带走洁面+纯肌水!! 1、多功能转换器带夜灯¥5.8 2、成人竹炭软毛牙刷¥11.9 3、丽芝士印尼进口威化饼105g*5袋¥12.9 4、伊贝诗水嫩护肤水嫩两件¥9.9 -110的大绻!!商家吐血充量[允悲][允悲] 仙醇茶叶铁观音盒装250g¥12.9源自安溪原产地,精美盒装!!老爸们最爱喝的茶叶茶啊!!!自己喝或者颂人都ok啊!! 伊贝诗洁面70g+纯肌水70ml¥9.9官旗活动!!拍最后一项!!某东要一百多的呢,现在只要9.9!!! 近一两年大热的无硅油洗发水!! 丝蕴无硅水润洗发露750ml+无硅净屑洗发露750ml¥49.9这次有多个组合可选啊!!功效是防止毛孔堵塞,去油防脱发,性价比很高,洗完后头发很柔顺丝滑!!线下一瓶都不止这个价了啊!!![怒骂][怒骂] 飞利浦电动牙刷¥189世界小姐张梓琳带盐,大牌纸,送牙刷盒和牙刷头,这个型号属于飞利浦的入门级电动牙刷,刷头属于中软,每30秒就会提醒你换区域,两分钟后会自动停止,不用担心刷牙的时间不够! vivo全系列钢化膜2片¥2.6大白菜啊!!!颂神器+后膜!!拍7.6的选项!!! 推荐个按摩手法,懒的话怎么舒服怎么推,不过记得要坚持使用哦~http://t.cn/RFWniqM 拍4件!! 都市丽人聚拢文胸4件¥69线下大牌!!4件只要69啊!!!线下一件就这个价了[跪了][跪了]快快快,趁还有码子!! 达芙妮单鞋¥19.9清仓价!!!这个给妈妈入双平底鞋还是很不错的啊[憧憬] 红豆家纺.秋冬柔软被芯¥99官方旗间店的,4.8分评价,三个颜色可选~我看了下,单人的150x200cm的最便宜了,在学校用的话也是刚刚好啦~[耶][耶] 【午间热销榜】——颜值超高的星空手表有100的券!送人送自己都超好看!9.9就能入手伊贝诗护肤两件,纯属体验价啊!还有花印的这款面膜是第一次做活动哦,线下要150的![怒骂] 1.星空手表¥58http://t.cn/RFW3AeG 2.花印面莫¥39http://t.cn/RFW3AeI 3.丝蕴洗发水750ml*2瓶¥49...http://m.weibo.cn/client/version 有160的大卷!!! COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、假姓皱纹、笑纹,紧致眼部肌肤,淡化黑眼圈!熬夜党必备!!今天没抢到原液的可别再错过这个了!!![怒骂][怒骂] 中长款卫衣外套¥69.9马上天气冷了就可以穿了!!!酷酷的学院风,还有运显傍身!!![doge] 回力百搭经典款帆布鞋¥59Jackson王嘉尔同歀,男女都可以穿!!回力这两年来超火的,国内外好多明星都在穿,老牌子了,还有运显傍身!![并不简单] 好多码都没了,有喜欢的别错过啊!!! 火烈鸟大眼睛睫毛膏¥14.9火烈鸟大白杆~[吃瓜]火烈鸟的睫毛膏反馈一直挺好的,适合新手。。。我这种手残党涂了都没有苍蝇腿。。它是螺旋刷头的,360°贴合睫毛~ 珂卡芙蝴蝶结单鞋¥99线下都有实体店的~3色可选,35~39都有啊!!!这种鞋底很软的,穿起来很舒服的,逛街逛多久都不累脚[憧憬] 花印美白面膜¥39这款是第一次做活动!看了一下详情页有日本药监局认证的美白功效~小红薯的小姐姐分享是159入手的[允悲] 墙烈推荐水蜜桃给你们,据说好闻到自己都想吃掉自己啊~[憧憬] W.DRESSROOM淡香喷雾100ml¥39这个是防弹少年团同款诶!只有四月棉,和蜜桃香味了~之前发的29块只有70ML,现在这个是100ML的!!算下来更划算!!! 映画日系亲肤绒披肩¥29可以是披肩、围巾、小毯子,12个颜色总有适合自己的[笑而不语] 实时热门好物!!!手表的颜值简直不要太高!!!伊贝诗的套装简直等于免费送!![怒骂][怒骂] 1、星空防水手表¥58 2、伊贝诗护肤两件¥9.9 3、素萃美颈霜¥24 4、4inlook美瞳小直径半年抛,拍2件¥39 梦幻岛钢化玻璃陶瓷饭盒780ml¥6.5可微波炉加热,比塑料加热更健康,双耳设计,防烫更人性![并不简单] 直降10块大洋,史低价!! 活力达蛋白代餐奶昔400g¥19富含25种矿物营养元素,科学配比膳食纤维!饱腹时间长达4小时,可以作为晚上代餐,减肥必备了!!![耶][耶] 怀梦时光纯棉内裤*4条¥29.9挺舒服的面料,他家的衣服惠惠也拍过好几次了,料子什么的都好喜欢,很少女[哆啦A梦花心] 买一赠一!这次比之前还高级,这款可以加在粉底和BB霜里面让妆容更服帖~ 现在只要33!!!史低价了!!![污][污]//@每天睡不够起不来:一直买的都是他家的打底裤,弹力好,不过之前都是39买的[泪],正好现在便宜又可以买着秋天穿了 澳洲山羊奶身体乳250ml¥5.1小红薯力荐!!新鲜羊奶小分子,水润好吸收!!全网最低价啊!!! 塔菲克入耳式通用耳机¥5.8音质一般般,经常丢耳机的小可爱可以备一条在身上,丢了也不心疼![并不简单] 降了20块啊!!! 故事主角破洞牛仔外套¥49.96款可选,赶紧上啊!!之前要69的,这次是反季才有的价!!xs到2xl都有码!![笑而不语] 爱乡亲蒸蛋糕500g*2¥16.9蒸的好吃不上火,足足两斤啊!!!线下一斤就是这个价了!!!早餐再配一瓶牛奶超级赞!![舔屏][舔屏] LG派缤成人按压式牙膏285g*2瓶¥39.8超市同款54元1瓶啊!!现在2瓶才38.8!!!邓论带盐的,里面含有珍贵竹盐成分,很多小可爱反馈这款的味道接近绿箭口香糖诶~[doge] 番茄派.温和洁肤卸妆水300ml¥9.9大白菜卸妆水来了!!!温和不刺激,性价比很高!!![憧憬] 光腿神器!!现在买月底就可以穿啦!!![污][污] 躺着玩着手机顺便按摩也是可以的哦,为懒人准备的[坏笑] Dr.Althea艾医生壳聚糖保湿补水套装,壳聚糖精华乳70ml+壳聚糖精华水70ml258元(包税) 据说这个艾医生的新品是修复界的黑科技[吃惊],主要是添加了壳聚糖这个很牛逼的修复成份,这种成份就只有MedSpa,Channel,雅诗兰黛才有添加的,不过香味比较多人吐槽,茉莉花香味,就是图五所说的很容易让人联...http://m.weibo.cn/client/version 平价贝德玛!! byphasse卸妆水500ml¥54温和保湿,卸妆干净不刺激!!西班牙国民护肤品牌,便宜大碗,很耐用啊[憧憬] worms软毛电动牙刷¥11.9超市一支稍好点的普通牙刷都要十几块了,入门级电动牙刷,正好体验一下[并不简单] 注意!!注意!!史低来袭!! 梵歌抖抖机甩脂机¥19一直都是39的!!懒人甩脂神器!!瘦腿,瘦腰,瘦肚子,瘦手臂都可以!!躺着瘦[憧憬][憧憬]史低价不要错过啊!!!! http://t.cn/RD8Ptb8 和易烊千玺一起穿破洞裤吧~[嘻嘻] 夏乞丐破洞打底裤¥35超级百搭的打底裤!!破洞的也很有个性,还有运显傍身哦! 4inlook美瞳半年抛1片2件¥29第二件0元!!半年抛1片,拍2件就要一对啦!!0~800度都有哦,他家的反馈一直不错啊!!![污][污] 伊贝诗洁面70g+纯肌水70ml¥9.9官旗活动!!拍最后一项!!某东要一百多的呢,现在只要9.9!!!完全就是一个u费的钱啊!!![怒骂][怒骂] 晨光20支中性针管子弹头替换芯¥7.79开学囤笔了啊!!![doge] 颐莲玻尿酸喷雾300ml¥59买即送100ml,到手共400ml!大的适合放在家里,小的可以出门携带,夏天出门真的很晒,用这个及时补水还能起到舒缓的作用,喷头炒鸡细腻,甚至秒掉雅漾和理肤泉![赞][赞] ins超火背带裤¥69ifashion店的!!背带裤真的是减龄神器了!!天气凉点就可以穿了[笑而不语] 花印水漾美白焕肤面莫¥39期间店的!!线下一瓶要150的!![吃惊]这款是冰淇淋质地的,延展性非常好,膏状的很好抹开,而且润润的哦~[喵喵][喵喵]看评论都说是“敷出看得见的白”![吃瓜]不过美白不是一天两天的事,坚持使用会看到效果[耶][耶] 热门好物推荐!!!按摩枕自用送人都是不错的[笑而不语] 1.素萃美颈霜¥24 2.本博红外加热按摩枕¥39 3.珂卡芙百搭平底鞋¥109 4.伊贝诗水嫩护肤水嫩两件¥9.9 沃尔梦水洗棉四件套¥39起床单+被套+枕套,再送2条毛毯或者枕芯2个!!拍1.2米的起,正好适合宿舍用啊!![憧憬] 帝兰修眉刀20个+眉笔+眉卡¥5.9这个价格没谁了!!!用得上的囤着吧!!![怒骂][怒骂] 月亮太重啦,摘不下来~只能摘星星戴在你的小手上啦[二哈][二哈] 第二件不要钱! 第二件不要钱! 御泥坊黑膜tao装42片¥76.9记得拍2件!!喵超的活动,快快快,赶紧啪2件,啪下不减活动结束[怒骂][怒骂] 拍一件6.8!!拍两件10.8!!! 苹果手机壳¥6.8涂鸦可爱卡通,软硬适中,全包边防摔耐磨!超多样式选择!![笑而不语] 一机多用,性价比真的超高啊!!!居家必备好货~[good] 连帽宽松加厚短款卫衣¥29反季促销才有的好价!!这个之前都是39的,质量不错,还有运显傍身!![憧憬] spa7ce七度空间卫生巾6包70片¥39.9极净秘护5包30片+颂40片掌心护垫,共6包70片!!王子文代言的,线下超市可没有这么划蒜!![跪了][跪了] 大白菜!!换号撸啊!!![怒骂][怒骂] 天鹅绒春秋丝袜打底裤2双¥9.9初秋就能穿了,两个颜色都好搭!!!黑色更显瘦些!弹性很大,囤着秋天穿!!! 晨光中性笔0.35签字24支¥16.9期间店的!!!比实体店划算很多啊!!囤笔囤笔,应该够用一学期了吧?[doge] 大部分都只有小码和中码了,喜欢的就赶紧看看带走吧[跪了][跪了] 原液已经涨价了,不过又上新了歀眼霜,只要19.9!!线下都是100+的啊!!![怒骂][怒骂] 【1】COM神仙乳50ml¥24.9 【2】com神仙水100ml¥29.9 【3】COM期间店多效大眼精华眼霜¥19.9 诗佩雅的女士睡衣7件套,¥118一整套7件啊!!可以穿一年四季的睡衣[憧憬][憧憬]颜值还高!![憧憬] 素浴无火香薰精油¥9.9藤条手工干花装饰,天然无火香薰,味道属于那种淡淡的,大概能用30~40天左右,还有补充液送!!平时当做摆饰也很好看的[笑而不语] 好爸爸天然亲肤洗衣液13.36斤¥69黄磊和易烊千玺一起带盐的!!!含:2kg*2+1kg*2+220g*2!13斤啊!!!囤一次可以很久了~[并不简单] 马奇新新夹心冰淇淋饼干200g*3袋¥29.9马来西亚进口的,号称饼干界的冰激淋,据说放冰箱3分钟,可以吃出甜筒的感觉[舔屏][舔屏] 拍2件发3盒!只要28!!!! 郑多燕复合蔬果酵素果冻¥28拍2件!!!维商36一盒!!日常一盒最便宜都要19啊!!!现在挖到-50漏洞卷!!!28直接带走3盒!就是果冻的味道!!超好吃!!晚饭后吃第二天就可以正常上厕所了[憧憬] 史低回归!!! RealBubee电动吸黑头神器¥48美容院小气泡同款!导出黑头仪,收缩毛孔,提拉紧致!!送功能性美容头+微晶钻石美容头+过滤棉,一机多用[笑而不语]注意不要在一个地方吸太久[并不简单]用前先用热毛巾湿敷或者配合导出液效果更好~~ 开迪多层简易鞋架¥12.9起有多款大小和颜色可以选择,收纳鞋子的神器,宿舍必备了!!![笑而不语] 新品冲量有才的价啊!!!![怒骂][怒骂] 小惠家字母绣花长袖套头卫衣¥34.8这款版型偏oversize风,慵懒休闲!!虽然还没有评价,不过有运显傍身可以放心买啊!!![憧憬] Clearasil四小时祛痘膏¥49Clearasil这个牌子在中国的知名度还没有那么高,但是在美国却是祛痘产品的常年榜首[doge]传说中的急救祛痘膏!!!很难得的活动,痘痘肌可以备一瓶,都说效果挺明显的[憧憬],一看有痘就抹,方便实用!!! 网易严选旗见店!!!他家质量超级好!!! 1.网易严选电动式硅胶洁面仪¥89 2.网易严选乳胶颗粒颈枕U形枕¥69 3.网易严选纯棉可裸睡睡袋¥99 4.网易严选全棉透气简约四件套¥119 史低价了啊!!! 露得清.SPF50+防晒霜¥59期见店的,SPF50+高倍防晒,用着清透,不油腻!!去海边玩、夏天军训、练车什么的都足够了,奶茶东同款特.价都要99[跪了][跪了] 伊贝诗水嫩护肤水嫩两件¥9.9拍最后一项,含:洁面70g+纯肌水70ml!!线下去买绝对不止这个价啊!![跪了][跪了]某东要一百多的呢,现在只要9.9!!!赶紧上啊[抓狂] 康美臣9饼3味广式月饼510g¥24.94.9超高评分~!!抹茶蜜豆,木瓜蓉沙,经典红豆沙三个口味!!送礼精美礼盒+手提袋!!自己吃送礼都不错啊!![笑而不语] 澳宝沐浴露玩美假日600ml*3¥39.9澳宝家的洗发水、护发素都很好用!!!淡淡的清香,泡沫很丰富,而且很容易冲洗!! chic链条斜挎单肩包¥29.9ifashion店的!!还有运险!!里面空间也很大,带子可调节!![憧憬] 怦然心动草莓晶饰品¥7.99项链、手链、耳钉都有,款式不同,价格也不太一样,据说粉色还能招桃花的咧~~[嘻嘻] 丫眯乐云南特产鲜花饼400g¥12.8玫瑰、抹茶、紫薯3种口味组合,也有单玫瑰的!他家的鲜花饼馅多皮薄,甜度正好合适,我不怎么吃甜的都喜欢吃[馋嘴] 这次是首次推,看了它家的反馈总体还不错!!美白效果很好,宝宝们可以试试~ -100大劵!美炸了有木有!![污][污] 星空防水手表¥58颜值超高的时空手表,感觉像是手上戴了整个银河系,有运显的,可以放心入[憧憬][憧憬][憧憬]http://t.cn/RFCIf3x 第二件0.1 四川蒲江黄心猕猴桃共5斤2件¥19.8猕猴桃号称维C之王!!单个重70-150g,这个5斤差不多有30个了!!!超市9个就要20多了!!![跪了][跪了] 按摩的时候还可以加热,暖暖的很舒服,天气转凉也可以用~ 看看有没有适合的[doge] 1.教师资格证考试教材¥46 2.中学教师证资格教材¥28 超大浴巾+毛巾两件tao¥29.9超大号浴巾+毛巾两条,在门店单买都要35块啦!可以选月份的哦[doge] 尺寸最大有4XL哦~换季就能穿了,黑色也好显瘦的呢,搭配衣服也超好看~//@每天睡不够起不来:一直买的都是他家的打底裤,弹力好,不过之前都是39买的[泪],正好现在便宜又可以买着秋天穿了 实时热门推荐!!!伊贝诗含:洁面70g+纯肌水70ml某东要一百多的呢,学生党也能轻松入的白菜补水,现在只要9.9!!!速度啦!![怒骂][怒骂] 1、森马杨洋同款纯棉印花T恤¥19.9 2、伊贝诗水嫩护肤水嫩两件¥9.9 3、TWAR星空手表¥58 4、COM多效大眼精华眼霜收¥19.9 现在不买,旺季被宰![二哈][二哈]冬天很流行的大衣啊!还是反季囤比较划算!! 芳卓萱宽松高腰牛仔裤¥49.9浅蓝色是直筒裤型,深蓝色和深灰色是小哈伦的!!这种宽松的比普通的窄脚裤更能修饰腿型,还有运显!![笑而不语] 【扬子】充电防爆卡通暖水袋¥14.8现在买最划算了!!昨晚没抢到南极人的可别再错过扬子的啊!!![怒骂][怒骂] 梦莎德晴雨两用雨伞¥16.9史低!!惠惠这边收到的反馈还不错嘛,他家最受欢迎的是樱花系列,不过其他的也不错,都是一个价[并不简单] LG派缤成人按压式牙膏285g*2瓶¥39.8超市同款54元1瓶啊!!邓论带盐的,含有珍贵竹盐成分,牙龈常出血的小伙伴可以试试,!!! -100的大卷! -100的大卷! 原宿内增高运动鞋¥59-100大卷!三款可选,尺码齐全!透气性好,还能悄悄增高几厘米[憧憬] 防滑绣花进门地垫*2块装¥5到手2条啊!!!拍第一项,尺寸是40x60cm的!!! KAMILIANT/卡米龙万向轮拉杆箱¥249起 唐艺昕,刘昊然,新F4共同推荐的拉杆箱!![憧憬]有20寸、24寸和28寸可选,里面是分干湿分离层的,万向轮也是静音减震,线下价要700+的啊[跪了][跪了]颜值真心高了! 施华蔻护发精油喷雾80ml¥49-50的大券!!旗件店的,他家的精油特别好用,适合烫染受损发质!!味道好闻,不油腻,某东109啊!! 最好吃的饼干!!! 丽芝士威化饼零食大礼包105g*5¥12.9起拍第一选项,超多小可爱买过都说好吃的,喜欢吃芝士的会更喜欢这饼干啊!!! 闪易体脂称¥29.8体脂称啊!!4.9的高评还有运险,送皮尺+电池!!这个都不用手机连接的,秤面上就有各种数据显示!!!还有触屏按键!!建议加10块就是usb充电的!![憧憬] 快快快!!!空调被只要9.9!!! 七好啄木鸟空调被¥9.9大白菜啊!!!拍100x150cm尺寸!!!上次没撑一会就没了!![怒骂][怒骂] 佰翔空厨椰子饼220g*3盒¥27超值8枚*3盒!!推荐椰子和红豆味的!!吃货浮力啊!![舔屏][舔屏] 美的电磁炉¥139美的生活电器旗舰店的!!买就赠运费险+不锈钢汤锅+铸铁炒锅!!2100W大火力,均匀加热,黑色微晶面板触摸式,颜色很好看,可以烧水,炒菜,煮火锅,超级方便!!![憧憬] 宿舍用品合集——有些小可爱都开学了吧,快来看看你还缺啥 电煮锅:http://t.cn/REMpn8F 床上桌子:http://t.cn/RRralgW 酷毙灯:http://t.cn/RBrHNv7 插座:http://t.cn/RBfg0il 坐垫:http://t.cn/REAmsqY...http://m.weibo.cn/client/version 2件34.9!!2件34.9!! Domfion/朵迷芬日本无痕内衣2件¥34.9冰丝无痕的,一点都不闷热!!背心、吊带的都有[笑而不语]超舒服,睡觉都能穿系列!! 宽松条纹毛衣长裙¥79ifashion店的!!!慵懒风带点性感,感觉比较适合瘦子[笑而不语] 云本蒸汽热敷眼罩10片11.9它家的新款,拍后四个选项是11.9到手10片!!拍前四个选项是48,到手60片,算下来的话拍前四个选项是更划算!只想要试试看的那就后几个选项~这种蒸汽眼罩在睡前敷一下第二天眼睛真的是会舒服很多的![笑而不语] 猫娘志家的2款活动,正好一套!!比前几天还降了5块!!![憧憬] 1、七分袖针织上衣,¥54 2、格子中长半身裙,¥84 关于伊贝诗我来啰嗦几句吧!!![doge][doge] 今天很多宝宝问伊贝诗怎么这么便宜~其实这个完全就是商家打品牌促销活动,也是为了抢占TB搜索排行的!!商家是亏本冲量的,所以呢,还是我们受益的[坏笑]毕竟线下要80+,现在活动只要9.9!!!拿回来保养胳膊都可以的~ 刚刚去科普了一下这个牌纸,它是在...http://m.weibo.cn/client/version 和手掌一样大的充电宝!!![憧憬] 大容量超薄迷你充电宝¥79.9迷你+数显+快充+苹果安卓输入!!简直不要太划算!!!超多图案可选!!![憧憬] RealBubee电动吸黑头神器¥48三种模式,油性、干性、混合皮肤都可以用!!使用的时候注意不要在同一个地方停留太久,也不要拉扯肌肤[doge]干干净净的看着爽!!! http://t.cn/RDoP8Ac 白菜好物推荐!!! 1、葫芦美妆蛋3个¥8.8 2、小白鞋清洁剂2瓶,¥5.9 3、毛姆《月亮与六便士》¥9.9 4、粘毛器1器+3卷纸¥5.9起 飞毛腿快充数据线2条¥6.8苹果、安卓都有,这么便宜,趁机囤着备用啊![doge] 拍100x150cm尺寸!!!库存最后300件,手慢无!!![怒骂][怒骂] 韩瑟收缩毛孔护肤3件tao¥9 期间店的,线下专柜要189!!!现在商家亏本做冲量,据说可以在一个月内,改善痘痘,色斑,毛孔粗大等情况!!可以试试哦[笑而不语] 10个刷头啊!!!性价比贼高!!![污] 艾医生海外旗见店——欧阳娜娜安利过这个牌子的气垫的!很好用!!![笑而不语] 1.艾医生樱花裸妆气垫bb霜¥149 2.艾医生壳聚糖保湿补水套装¥258 3.艾医生亮眼达人按摩眼霜¥139 4.艾医生第2代美白针素颜霜¥129 weekeight手提旅行包¥39能折叠的很方便,行李箱装不完的再来个旅行包!![doge] 2瓶啊!!!750ml大容量!!! 丝蕴无硅水润洗发水750ml*2瓶¥49旗件店的活动!!!这次有很多种组合可选啊!!有针对油性发质,受损发质,有头皮屑的,按需要选哦~[耶][耶] [给力]2件!!2件!!! jeeanjoose薄款运动内衣2件¥29有背心款和细肩带(可调节)可选,无钢圈的穿起来不会有束缚感啊,睡觉也能穿的!![污] 每天抖一抖~燃烧你的卡路里!![污][污] 茗仟红豆薏米除湿茶320g¥7.8红豆薏米是专门祛湿的,这个解腻的效果也不错,还可以改善湿气带来的各种问题啊[憧憬][憧憬] 久量USB蒸汽眼罩¥23.9买就送冰敷片!!可循环使用1000次以上哦,比买一次性的蒸汽眼罩要划算多了[笑而不语] 脖子上用一粒半或两粒黄豆大小就够用了~脖子也要好好保养呢[doge] 素萃美白祛斑精华小玉瓶¥49买一送一!!!到手2瓶!!!确实非常平价~我看了一下是有药监局备案的,大家不用担心[憧憬][憧憬]精华液的成分熊果苷,维C和人参精华~主打美白淡斑!! 9块9!!带走2条!!!这样的机会不多啊!!![怒骂][怒骂]//@女装惠:光腿神器!!现在买月底就可以穿啦!!![污][污] 背背佳驼背矫姿带¥169期间店的!!男女老少都可以用的!!我记得之前都是卖300多呢[吃瓜][吃瓜]经常做作业或者玩电脑,感觉背越来越驼,用这个可以慢慢调整过来!! http://t.cn/RgpGh1f 美的家用全自动榨汁机¥79旗见店,除了榨汁还能打冰沙、磨粉,适合家用!!在外面买一杯鲜榨要一二十呢!!一个榨汁机只要79真心划算!![good][good] http://t.cn/ReJ97Iu 活动今天结束! 珂卡芙百搭平底鞋¥109期间店110的大卷啊!!!这歀线下要199+的啊,有35-40码可选!少女粉的超好看啊!!!后面绑带的设计也很有特色[笑而不语] kai贝印旗见店,它家的反馈真的很不错呀~ 1.便携式睫毛卷翘器¥22.8 2.专业修眉刀刮眉刀¥18.8 3.小号修眉刀刮眉刀¥19.8 4.腋毛全身刮毛刀¥17 160的大卷!!!屈臣氏也有卖!!![怒骂][怒骂] COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、紧致眼部肌肤,淡化黑眼圈!坚持使用效果更好!! 拍第二件0.1圆!!红心猕猴桃的营养价值挺高的!!![憧憬] 树上的鱼原宿风化妆镜¥12.9少女心的粉色,下面还有小底座可以放口红、皮筋发卡之类的[吃瓜] 去美容院做次小起泡要100多呢!!还是自己在家做更划算呀~[喵喵] 开学宿舍用品合集,你们都准备好了吗?[doge] 1.吹风机2000w¥29.99 2.USB电风扇¥28.5 3.床单被套五件套¥35 4.折叠小书桌¥11.8起 rasa风味酸奶200ml*6瓶¥19.9超级Q的包装,有杏+燕麦/混合莓果,混合莓果口味酸酸甜甜的,燕麦口味夹着杏香味,两种风味酸奶带给你新奇体验[并不简单] 999无糖冰凉薄荷糖39粒*3支¥19.9薄荷味3支,提神醒脑,清喉利咽,清新口气,商超10元一支,这里三支才19.9!!无蔗糖的的减肥也不[笑而不语] 安遇安琪九分魔术裤¥33难得降价啊!!日常都是38的[跪了]九分和长裤都是一个价,加绒的贵些!S到4XL的都有,还送运险!! 第二支1元,买2再送口红1支!!! rozo浪漫丝滑唇釉3支¥17直接拍两支!!!平均一支才五块多!这是他家的新品,颜色都好好看!唇釉相比口红最大的优点就是显色,然后也不那么容易掉色!! 开学了,给你搭配一身小清新装~[笑而不语] 1.条纹一字肩T恤34.8 2.半身百褶短裙30 3.百搭个性棒球帽9.8 4.简约百搭斜挎包35 素萃紧致淡纹美颈霜¥24国货之光!小紅薯上一大堆好评!!经常低头一党是很容易长颈纹的,别让颈纹暴露你的年龄呐,每次用取一粒半或两粒黄豆大小,按摩吸收就行[并不简单] 帝兰修眉刀20个+眉笔+眉卡¥5.9这个价格没谁了!!线下一片就是2块钱!这个是20片啊!!还送眉笔和眉卡[怒骂][怒骂] 布兰奇超大浴巾+毛巾两件¥29.9这种吸水性非常好,浴巾140*70的+毛巾75*35的!!外面单单这个浴巾就是40多了!!!浴巾上还有1-12月份字母的刺绣,可以选择自己的生日月份和有意义的月份哦~~[并不简单] 热门好物推荐!!素萃的精华爆款返场了!!依旧是买一送一!!!星空手表今天超级爆!!![憧憬][憧憬] 1.RealBubee电动吸黑头神器¥48 2.星空防水手表¥58 3.伊贝诗.水嫩护肤套装¥9.9 4.素萃美白祛斑精华小玉瓶2瓶¥49 你们之前都是拍的什么色号呢,来说说[doge] 康佳.激光脱毛仪¥299-300大卷!!美容院去一次不止这个价!!!现在入手一个只要299!!!可多人使用,全身都可以用的!!!!基本上七八次就可以完全去掉了,奶茶东的同款都是499啊!!! 卷能领5张!!! 森马杨洋同款纯棉印花T恤¥19.9夏装最后一波!!好多码都没了,有喜欢的别错过啊!!![怒骂][怒骂] 小熊迷你小电锅¥69600w功率,这种有点像电磁炉+锅的组合,比平时发的小电锅贵是因为功能上会比较多,特别是有预约功能,煮各种吃的有时间控制。有蒸笼的会贵一点!![并不简单] 本博红外加热按摩枕¥39躺坐都可以的,按摩的时候还可以加热,冬天用超级舒服啊!!自用或者给爸妈、长辈买一个都是可以的啊!! http://t.cn/RFWK4T0 你们想要的就要抓紧啦,目测库存2000多件啦!!![跪了][跪了] 多功能创意置物架¥19.9起放小书桌上很好用的,很适合宿舍用,把小小的空间利用起来!![笑而不语] 旅行坊水收纳密封袋¥7有各自大小的可选,出去玩的时候放些内衣内裤啥的[并不简单] 依美璐洁面仪¥16.9不仅仅是个洁面仪,还是个导入仪,8档调速,真的是用过洗脸仪之后觉得脸真的干净多了[doge] 全尺寸一个价!!! 南极人全规格纯棉四件套¥99100%纯棉的,线下同步有售,价格比线下实惠很多,有运险![doge] 奶茶东同款特.价都要99!!现在卷后59直接带走![怒骂][怒骂] 澳宝化妆品旗见店,它家的一分钟焗油真的是无限回购的~[耶][耶] 1.一分钟焗油护发225ml¥19.9 2.香氛持久留香洗发水¥12.9 3.西柚透亮润肤乳液¥14.9 4.缤纷美肌沐浴露3支¥39.9 今天热门的几个裤子在这里!!你pick哪一条??[笑而不语] 1、天鹅绒春秋丝袜打底裤2双¥9.9 2、芳卓萱宽松高腰牛仔裤¥49.9 3、安遇安琪九分魔术裤¥33 4、夏乞丐破洞打底裤¥35 没错!!5.9一条运动短裤!!!买来当睡裤都值啊!!![怒骂][怒骂] 要保湿就用伊贝诗![憧憬] 伊贝诗洁面70g+纯肌水70ml¥9.9拍最后一项,内含:洁面70g+纯肌水70ml~~某东要一百多的呢,现在只要9.9就能拿到!!!存粹是出个u费钱了!!![怒骂][怒骂] 7点半结束!!!最后10分钟!!!! 乐平桃酥王¥19.9第二件1圆!!第三件不要钱!!直接拍三件啊!!!到手3斤,三口味可挑哦,酥酥的脆脆的敲好次~[憧憬] 童记三利和麻辣鸡脖800g¥19.9蜜汁口味的,整整800g啊我的天!!大晚上把持不住了[舔屏][舔屏] 好吉利无芯卷纸36卷¥29.9折合一卷都不到一块大洋,不漂白更健康,好吉利的纸质还不错[并不简单] 回力休闲帆布鞋¥59Jackson王嘉尔同歀,男女都可以穿,颂运险!!!回力这两年来超火的,国内外好多明星都在穿,老牌子了[并不简单] 今日热销榜—颜值超高的手表非常推荐[中国赞]想要头发柔顺丝滑就试试无硅油丝蕴洗发水,大牌花印、珂卡芙和森马等好东西,可要多瞧瞧[给力] 1.星空防水手表¥58http://t.cn/RFY4PVx 2.丝蕴无硅水润洗发水750ml*2瓶¥49http://t.cn/RFY4PMo 3.花印水漾美白焕肤面莫¥39http://t.cn/RFY4Pi6 4.珂...http://m.weibo.cn/client/version 无孔圆扣皮带¥4.9没有孔的,腰大腰小也自己好调节,搭配牛仔裤刚刚好[doge] 优理氏胶原蛋白原液30ml*2瓶¥28换新装啦,折合一瓶只要14!屈臣氏,微品会同步热售价都是99一瓶[允悲]配合面霜,经华,粉底BB都可以~可修复肌肤改善肤质,原液分子量小皮肤更容易吸收哦! 实时热门推荐~星空系列的手表美炸了!!福派一共到手10个刷头啊!!用到天荒地老了!!![怒骂][怒骂] 1.RealBubee电动吸黑头神器¥48 2.星空防水手表¥58 3.珂卡芙百搭平底鞋¥109 4.福派电动牙刷配10枚刷头¥63起 拍2件!! 蒛一轻薄款无痕内衣拍2件¥78.22全是夸的内衣!!真的很舒服,舒适感不输这里买的一百两百的那些,它们家内衣真的是在小荭薯爆红了!![鼓掌] 笛梵洗发水400ml¥48起拍第一项起,官方期间店的活动!4.9高分好评,味道很香反馈也很不错! 炫迈夹心果味口香糖28片4盒¥19.9线下同款21片的就要9.9元一盒!这次是28片一盒的啊!!![笑而不语] 【山山】纳米矿晶50g+3包维达抽纸¥5.1拍最后一个选项!!冲着抽纸也要囤啊!!![憧憬] 一次齐集时下热门唇色[吃瓜] 玛丽黛佳网红口红套装6支69元 经典国货了,一下子就可以得到6只口红了,这个套装非常适合不知道自己适合什么口红颜色的妹子,质地也是那种软软糯糯的感觉,很滋润,日常的话都完全hold住,都是很温柔很日常的颜色~[耶] 01梅子色 [心]这是这套里面最妖娆的颜色了,但...http://m.weibo.cn/client/version 尔腾可撕粘毛器+3卷纸张¥5.9大白菜啊!!!沙发上的宠物毛,地板上的头发,衣物上的粘尘都靠它!!! 银鸽手帕纸便携餐巾纸54包¥17.9银鸽50年老牌子!!一包折合3毛多,现在是出门必带纸巾的[二哈] 九州树叶冬瓜荷叶茶120g¥6.9降了3块!!夏天撸串多多喝这个清清肠,吃不胖!!![哈哈] 部份款式的库存不足100了,你们要速度啊!!![怒骂][怒骂] 星空防水手表¥58-100大劵!!颜值超高的星空系列,想摘下星星给你,摘不到,那就把星空装进表盘送给你[笑而不语] 宏丰贵邦纯手工阿胶糕260g*2¥38.9买一赠一!!!补血补气的,女生多吃对身体有好处,也可以送给妈妈吃~[并不简单] Missface妆前乳隔离霜¥19.9滋润型底妆隔离,3色号选!!紫色:适合偏黄肌肤,带有调整偏黄肤色效果绿色:适合偏红肌肤挤青春痘肌肤[憧憬][憧憬]药妆级别的,敏感肌也能用!!! 热门好物推荐!! 1.优理氏胶原蛋白原液2瓶¥28(买一赠一共2瓶) 2.福派电动牙刷配10枚刷头¥63起 3.本博红外加热按摩枕¥39 4.安遇安琪九分魔术裤¥33 春夏宽松阔腿裤¥49.78男生女生都可以穿的很好看的工装裤!!配上帆布鞋超级帅的!!![笑而不语] 花印水漾美白焕肤面莫¥39旗舰店的活动啊!!线下卖150的!![吃惊]这歀是冰淇淋质地的,延展性非常好,膏状的很好抹开,水润水润的,小红薯测评也很多说美白有效果哦!![耶][耶] 露得清官方旗见店!!! 1.SPF50+防晒霜88ml¥59 2.深层洗面乳100g¥34 3.挪威保湿护手霜*2¥84 白菜好物推荐!!! 1、大容量化妆洗漱包¥14.9 2、小清新陶瓷装饰花瓶¥6.8 3、维简便携密封小药盒2个¥3 4、蚂蚁大叔炸鸡排面包糠500g¥5.8 换季就是换衣服了[doge]先自己挑挑,往下多翻翻看,总有你们钟意的[笑而不语] 1.牛仔外tao:http://t.cn/RRrR0p6 2.风衣:http://t.cn/RRg58wR 3.毛衣:http://t.cn/REzSeaa 4.卫衣:http://t.cn/RRkyMvq 5.T恤:http://t.cn/RE7xeMQ...http://m.weibo.cn/client/version 睿量吃鸡神器一对装¥5.8安卓苹果通用!!!拍倒数第二项!!大吉大利,今晚吃鸡[doge] 降了10块!!!史低!!! 梦蝶婷卡其色lulu风衣¥129春秋都能穿的风衣!!!经典卡其色,百搭不挑身材的款啊,线下至少要个两三百吧。。还有运险傍身!!! 靓真无痕内裤4条¥11.9超值4条装,折合才不到3快啊!他家质量还不错,惠惠之前买过!![笑而不语] 恋意睫毛增长液¥5.8这款睫毛增长液的成分很温和,用起来不刺激,涂在睫毛上有淡淡的香味,惠惠给你们找了一个增长睫毛的方法,赶紧get起来[doge] [憧憬]好久不见的雅邦出新款了!国货之光鸭 【19.9】雅邦金管粉管口红 他们家真的好久没做活动,这次活动来有2种可选:金管丝缎柔润,粉管丝雾哑光。想入手的宝宝们我给你们推荐几个他们家比较热门的色号: [给你小心心]01号豆沙色:不是偏土色那挂的豆沙而是水红水红的豆沙(≧∇≦)ノ很提起色显白...http://m.weibo.cn/client/version 买2送1到手3盒[憧憬][憧憬] 多燕瘦.复合酵素果冻拍2件¥28拍2件啊拍2件啊!!!平时一件19的,现在拍2件发3件只要28[憧憬][憧憬]而且!对便秘很有效,晚饭后吃第二天就可以正常上厕所了[笑而不语] 第二件不要钱!!!! 4inlook美瞳半年抛1片2件¥29第二件0元!拍两件只要29!!拍2件就要一对啦!!0~800度都有哦~[污] 传说中的急救祛痘膏!!!经常冒痘的可以囤一支[good] 俏精灵枕头枕芯一对装¥19.9这次枕芯枕套都有了!!!还是一对装!!!超值啊!!![憧憬] 云本蒸汽热敷眼罩10片¥11.9拍后面四个选项,只要11.9到手10片!!性价比比珍视明还要高!!惠惠每天都在用,感觉眼睛不那么疼了,睡眠质量也提高了!! 按摩的时候还可以加热,到时候过冬了可以用[喵喵] 小狗熊老襄阳大米锅巴400g*3包,¥19.9,超市一袋就这个价,锅巴有点硬,很有嚼头,爆辣真的就是爆辣了[污] 售后超给力!!30天试用,吸不出包退!! RealBubee电动吸黑头神器¥48英国皇家布比公司旗下的牌纸!!之前都是58的,FDA认证医疗设备厂家生产有保障!现在还送功能性美容头+微晶钻石美容头+过滤棉,有三种模式,油性、干性、混合皮肤都可以用!配合导出液效果更佳! http://t.cn/RDoP8Ac 小白鞋清洁剂2瓶¥5.9拍最后一个选项!!秋天就是小白鞋的天下了!!![憧憬] NTN娜缇奈一次性洗脸巾¥14买2送4,送的是4包便携的,也就是拍2件只要33,到手2包正装+4包便携[耶]~比较划算了!这个纯棉不掉絮的,母婴也能用的。 -400大卷啊!!!! 奥克斯智能高端破壁机¥5994.9的高分!!打出来的果汁没有粗纤维,现在家里都用破壁机了,功能多又好~榨豆浆米糊也非常方便!! http://t.cn/RFWGiRs 反季才有的好价啊!!!现在买了月底就能穿了!!! 梵歌纳甩脂机¥19起拍最后一项!!全身都可以用,每个部位每天只需5分钟,下班回家或者在宿舍躺着站着都可以用!!哪里要瘦抖哪里![笑而不语] 依蕾斯可外穿家居服¥39现在要开始买长袖的睡衣啦!!这个多款可选,还有运显!!!一套只要38!!! 施华蔻赋芮深海臻耀精华发油¥49(降了10大洋) 这款护发精油在屈臣氏是109一瓶的哇[允悲]特别适合头发干枯毛躁的小仙女~可以在头发半干的时候涂抹,然后再吹干,就可以感觉到头发变得特别顺滑有质感~不用担心会油的啊~吸收超快的!有喷雾款可以选择,比较适合懒人吧[允悲] 7条啊!!7条!!! 黛尔佳人中腰内裤7条¥19.9起拍后面的选项起!!买五送二到手7条!!!超多小清新款式可选,一条不到3块,他家的性价比高!![耶][耶] BK指甲油5ml*2瓶¥7撕拉的可直接剥,方便快捷不伤指甲!!十二星座都有!!!你们都是啥星座?[笑而不语] 热门好物推荐[赞啊][赞啊] 1.RealBubee电动吸黑头神器¥48 2.花印水漾美白焕肤面莫¥39 3.COM多效大眼精华眼霜¥19.9 4.好吉利竹浆无芯卷纸4层36卷¥29.99 今天最后一天!!!抓住机会啊!!![怒骂][怒骂] 珂卡芙百搭平底鞋¥109这歀线下要199+的啊,有35-40码可选!蛮修脚型的呢! 哈药集团速溶暖宫红糖姜茶¥5.1史低价了!!!快快快,手慢哭啊!!生理期那几天用得上啊!!![憧憬][憧憬] 洛艺轩甜美森女系发箍发带4个¥9.8饰品店一个怎么也得要10块了吧,平时化妆洗脸敷面膜用之外,还可以作为发饰戴出门[笑而不语] 科满仕随手万能贴¥3.8黑科技!!想贴哪贴哪!!还能水洗反复使用!![笑而不语] 素萃花染唇间呢语口红¥24中国风小黑管,颜值很高!!质地滋润细腻,上嘴不干不卡唇纹[憧憬]牡丹吻是“999平价替代”,黄皮也能显白的正红!!!4个颜色都好看!!! 打底裤2条只要9.9!!!! 天鹅绒春秋丝袜打底裤2双¥9.9弹性很大,黑色显瘦、肤色性感!!囤着秋天穿啊!!![憧憬] 百搭小白鞋¥29搭配裤子裙子都好看!!!赠运险啊!!好久没看到这么便宜的小白鞋了!!!速度上!!![怒骂][怒骂] 柏康强力挂钩20个¥5.8拍第一项,最低价!宿舍桌子上挂点小玩意也很方便!![笑而不语] 碧C婴儿湿巾80抽*5包¥13.9一包平均2块多!!!2块多!!整整400片,拿来擦桌子都不心疼的!! 回复@一件本分的小背心:哈哈哈哈好眼力[喵喵]//@一件本分的小背心:明明看是领卷的怎么看腿这么像我玺子,然后一打开还真是,老母亲的眼睛依然毒辣[ok] 布兰奇超大浴巾+毛巾两件¥29.9浴巾140*70的+毛巾75*35的!!浴巾颜值很高哇,吸水性好,外面单单这个浴巾就是40多了!!! 颜值在线!非常适合街拍!!小个子还能悄悄增高[污] 100块的大卷!!! 星空防水手表¥58送精美礼品盒包装+手表电池+小礼物+终身保修+运显!!很多款可选,戴上很有范儿啊!!就像把星空戴在手上,颜值超级高!!![污] http://t.cn/RFCIf3x 包治百病[心] 【1】chic斜挎单肩包¥29.9 【2】ins超火包菱格迷你链条包¥44 【3】斜跨单肩包¥24.99 深夜放毒来一波[嘻嘻][嘻嘻] 懒人火锅:http://t.cn/REb3CDP 螺蛳粉:http://t.cn/REb3Ceg 火鸡面:http://t.cn/REUyHTs 牛板筋:http://t.cn/REONmWE 麻辣小鱼:http://t.cn/REONmW8 牛肉干:http://t.cn/REb3CeD 鸭脖:http://t.cn/REUyHHv 辣条:http://t.cn/REb3Ces 鸡爪http://t.cn/REONmWT 2瓶啊!!!750ml大容量!!![怒骂][怒骂] 丝蕴水润洗发露750ml+净屑洗发露750ml¥49.9超值2瓶装,线下一瓶就要54.9了,多种组合可选[笑而不语]有针对油性发质,受损发质,头皮屑的,记得按自己的需要选哦~ 买就送眼影刷1套共十支!!再也不怕串色了[憧憬] rozo钻采丝绒9色眼影¥14第二件还半价!四种色系可选,平价战斗机rozo,好上色,新手也可以玩转! 卫龙辣条大面筋68克*8包¥14.9折合1.86一包!!辣条真的是吃不腻[舔屏][舔屏] 郑凯家的牌砸!!! DUEPLAY兔子耳朵慵懒风衣¥98哇!!想这件卫衣很久了!!居然挖到了100的大卷!![吃惊][吃惊]兔子耳朵的超可爱,可以和男朋友get情侣款[笑而不语] 记得配合导出液效果更佳哦,建议一周吸个1-2次就可以了[鼓掌][鼓掌] 海福盛速食粥6杯装¥24.9精炖牛肉粥、家常海鲜粥、排骨菌菇粥三种口味组合!!加开水很容易泡开!!!活动很长时间出现一次,惠惠每次必囤的,懒人的福利! 回力小合集!!!今年回力真的大火啊!!!好多明星也在穿的!![憧憬] 1、回力休闲帆布鞋¥59 2、回力高邦帆布鞋¥49 0点!!前15分钟第二件0元!! 杰士邦零感臻薄99定制25只装拍两件/69只有前15分钟第二件0元的!!想要的自己上车[doge][doge] 肤色不均、黯沉的赶紧试试!!身体也能用[笑而不语] 素萃小专场~ 1.花染唇间呢语口红24 中国风小黑管,盖子上磁扣设计,咔哒一声自动扣上,很带感~ 2.紧致美颈霜150ml24 坚持使用配合按摩可以看到明显的效果,手法轻轻的向上提拉~ 居家日用品走一波~[污] 1.舒蕾洗发露600*2瓶¥39.9 2.澳宝缤纷沐浴露3支¥39.9 3.蓝月亮洗衣液500g*5袋¥39.9 4.舒客防蛀牙膏140g*6支¥26.8 有便秘的宝宝了解一下,亲测有效!!!拍2件发3盒!只要28块啊!![怒骂][怒骂] 珂卡芙旗见店!!!今天最后一天了!!!都是100多的大卷啊!!![怒骂][怒骂] 1.百搭韩版平底鞋109 2.平底方头蝴蝶结单鞋99 3.一字扣粗跟凉鞋女99 热门好物推荐!!! 1.RealBubee电动吸黑头神器¥48 2.星空防水手表¥58 3.COM多效大眼精华眼霜¥19.9 4.本博红外加热按摩枕¥39起 这个巨抢手,路过的不要错过了!![怒骂][怒骂] 小白鞋清洁剂2瓶¥5.9拍最后一个选项,洗小白鞋特别好,还很方便!!!惠惠上次在超市看到同类型的小白鞋神器一瓶都是十几块!!! 高腰直筒裤2条¥612条啊!折合一条才30[doge]多个歀式组合可以选,都是比较百搭的样式!!还有运显傍身啊!!![笑而不语] 0点重磅预告!!历史最低价啊!!! 隐形蓝牙耳机¥9.9送数据线,充电一次大约可以通话5~6小时!!小巧玲珑的,这个完全比普通耳机还要便宜啊!!![怒骂][怒骂] 先领卷加车,0点拍!!! 充电防爆热水袋¥9.8虽然现在可能还用不上,但是可以趁好价先囤着!到了冬天都卖20多了!!![怒骂][怒骂] 先领卷加车,0点拍!! 修正美白祛斑霜30g¥9史低好价回来了!!!都是草本配方!还持国家CFDA功效产品特征!!药店里一支都要好几十的,有效改善色斑和晒斑[憧憬][憧憬] 直降了6个大洋!!之前都是39的!! 魔术黑色打底裤¥33弹力大,还特别显瘦!!惠惠这边收到的反馈很不错的,这个还有运险!![耶][耶] 0点!!前十分钟第二件0元!! 强生婴儿牛奶沐浴露拍两件/40.9 只有前十分钟第二件0元!!目测库存只有3000件的!!想要的记得蹲点!!强生的沐浴露真的一生推啊!![怒骂][怒骂] 一次性口罩50只¥5.1一次性口罩,好价回归了!!防尘防雾霾还防晒! 先领卷加车,0点拍!! 妃琳卡持久保湿口红5支¥9.9少女心爆棚的口红礼盒!!全都是热门色号!不管你是白皮、黄皮还是黑皮,总有一个颜色适合你!!这个上次贼抢手,抢了十几万件[怒骂][怒骂] 0点聚划算,基本都是要拼手速的!!赶紧看看要哪些! 【前15分钟第2件0元】杰士邦.零感臻薄避孕套http://t.cn/RFHwWlJ 【前1小时第2件0元】美迪惠尔.三重奏安瓶精华液http://t.cn/RFHwWsp 【前30秒17.90】凯蒂猫.女童纯棉内裤4条http://t.cn/RFHwlcA 【前3000件9.90】远港.冬季居家保暖棉拖鞋...http://m.weibo.cn/client/version 先领卷加车,0点拍!!! 草木之心隔离霜¥29隔离霜中的平价战斗机!!三个色号选择,每个颜se对应不同的功效!!!紫色更提亮,绿色更遮瑕,自然色显白!!用过的好坏都来说说!![笑而不语] 薇诺娜化妆品旗J店,敏感肌亲妈啊~[good] 1.透明质酸修护面膜3片装¥96 2.透明质酸修护洁面凝胶¥128 3.透明质酸修护精华水¥168 康夫家用小型功率电吹风¥27.91200w小功率,不会跳闸,宿舍家用都可以的呢~~[憧憬] 有100的大卷哦!!谁戴谁好看!!!配上手链一起更美[污] 六张图全都是买家秀[喵喵]好看又好闻的香薰来啦~~ 先领卷加车,0点拍!!! 米尚.童趣几何茧型中长款羽绒服¥299400大券啊!!还是官旗的活动,去年冬天疯抢啊!!!反馈一直都很不错,这个线下超级贵的啊!![跪了][跪了] 先领卷加车,0点拍! 高姿雪耳6件组合¥14.9起旗舰店哒!!第二个选项!含:晒后修复啫喱60g+保湿水10ml+保湿乳10g+水活面膜3片!这些所有只要14.9!![吃惊][吃惊]绝对超值啊!平时三片面膜都不止这个价了啊!![怒骂][怒骂] 刚刚发现这个活动今天结束啊!!!!还有最后半小时的机会!!![抓狂][抓狂] 最生活家用纯棉毛巾¥14.9小米投资的毛巾品牌,G20指定毛巾,吸水性和抗菌抗螨的效果都很好的,性价比超级高!!! 回复@熊宝宝Dylan_:哈哈哈冲鸭!!![污][污]//@熊宝宝Dylan_:每次看到这样的都可激动了[允悲] 天鹅绒春秋丝袜打底裤2双¥9.9初秋就差不多可以穿了!!!9.9到手2条打底裤简直是白菜价啊!!![怒骂][怒骂] 先领券加车,0点拍!! 慕婷空气棉柔卫生巾4盒40片¥29.85拍2件!到手4盒共40片,这个牌子据说很好用,不含荧光剂的,超薄空气棉,反馈挺好的,每月都要用的,趁活动囤!![憧憬] 厚成人防滑塑料衣架20个¥14.9开学囤一波,这种衣架不容易弯,可以挂冬天的大衣!! 超级百搭的小白鞋只要29啊!!!!还有运显!!!库存在飞!!!![怒骂][怒骂] 先领券加车,0点拍!! 迪凯瑞黄金鱼子精华原液30ml39.9 某东上一支要98!!主打改善肤色暗沉,延缓皮肤衰老[耶]对肌肤暗淡、干燥、松弛都有改善效果,这个还带抗氧化的功效,这个晚上用完第二天起床皮肤水嫩嫩的,效果棒棒滴![赞] 先领卷加车,0点拍!! 老北京祛湿足贴50贴¥9.8旗舰店哒!!之前最低都要13的啊!!!祛湿排毒,改善睡眠,晚上贴,早上撕,非常方便!! [给力][给力]券可以领5张!! 森马男士T恤¥19.9超多印花款可挑的!!森马的质量还不错,线下还是很贵的,可以给家里的男同胞囤一波!![笑而不语] 最后20分钟!!!这个粉色真的很俏皮了!!!错过了就只能去线下买199的了[怒骂][怒骂] 第二件半价,第三件0!!直接拍三件到手90片! 千纤草脸部卸妆巾30片¥37.35拍3件!!!这种卸妆巾片装的,出门携带非常方便了!!! 先领卷加车,0点拍!!! 楼兰蜜语新疆一等灰枣500g*2袋¥19.9期间店的!!灰枣要比一般红枣稍小一些,但是会更甜哦!!女生可以多吃些枣,补血养气[并不简单] 丁家宜参肌水漾护肤套装¥39期间店的!!!凤凰带盐!!!库存就300件!!![跪了][跪了] 妙钻港风平底街拍豆豆鞋¥29.9可以穿三季的单鞋,码子偏小,拍的时候可以拍大一码,有运险的!!! 白菜好物推荐!!! 1、鸥聆尚平板手机支架¥2.9 2、旋转亚克力化妆品收纳盒¥9.8起 3、睿量吃鸡神器一对装¥5.8 4、imint薄荷糖润喉糖3盒装¥14.9 实时热门好物!!!黑头神器神器爆款返场!!!花印面膜线下150啊!!![怒骂][怒骂] 1.星空防水手表¥58 2.伊贝诗.水嫩护肤套装¥9.9 3.RealBubee电动吸黑头神器¥48 4.花印水漾美白焕肤面莫¥39 中公教育.公务员考试用书4本¥9.9无卷直接拍的!!!4本只要9.9啊!!! 超值750ml*2瓶大容量,囤一次够用大半年了!![污][污] 回力高邦帆布鞋¥49回力的质量不错,性价比也是杠杠的!这个帆布鞋第一次来啊,男女款、高低帮都有呢!![doge] 热门好物推荐!!好吉利的纸质非常好,可以囤一波!!![怒骂][怒骂] 1、好吉利无芯卷纸36卷¥29.9 2、宏丰贵邦纯手工阿胶糕260g*2¥38.9 3、裸睡水洗棉四件套¥39 4、露得清防晒霜spf50¥58 先领券加车,0点拍!! LG安宝笛美肌香水沐浴露500g¥29世界顶级品牌LG生活集团旗下!!自用款!!质地非常温和!清洁力也很好!持久留香!屈臣氏69一瓶!! 先领卷加车,0点拍!!! BEELY滋润乳木果护手霜4支¥10.8很润但是不油腻的护手霜!!买一就发4支!!可以用好久了!!! 有160的大卷!!! COM多效大眼精华眼霜¥19.9期间店的!还赠小样多效霜!!能淡化干纹、假姓皱纹、笑纹,紧致眼部肌肤,淡化黑眼圈!这个点还没睡的夜猫子建议入!!![doge] 先领券加车,0点拍!! 全尺寸一个价!![给力] 全尺寸冬被加厚保暖被芯被褥6斤¥59上次有很多小可爱没有抢到的!!这次蹲好了!!先往大大厚的拍!!!这么划算还有运显啊!!![怒骂][怒骂] 0点浮力汇总—热水袋昨天没有抢到的快来!!草木之心隔离和妃琳卡口红爆歀返场,今天0点很多好东西,可要多翻翻看看[中国赞] 1.充电防爆热水袋¥9.8http://t.cn/RFHSfYp 2.草木之心隔离霜¥29http://t.cn/RFHSfQL 3.妃琳卡持久保湿口红5支¥9.9http://t.cn/RFHSfR6 4.隐形蓝牙耳机¥9...http://m.weibo.cn/client/version 今天的爆款了解下!!!珂卡芙0点就过期啊!!![跪了][跪了]
88 | '''
89 | content1 = '刘强东演了一出好戏'
90 | content1 = '''
91 | B总001
92 | CPA会计
93 | CPA战略
94 | CPA考完了
95 | GENG
96 | HOT演唱会
97 | MING的开团厉害
98 | MLXG锅老师
99 | RNG 三星
100 | RNG出线
101 | RNG小组第一
102 | RNG输了
103 | VIT打的好
104 | 一季换一个画风的男主角
105 | 三星回家
106 | 上课听困了却强打起精神撑着
107 | 世界标准日
108 | 中国女排加油
109 | 中国女排逆转战胜美国队
110 | 交响乐熏陶来自猫和老鼠
111 | 人类的本质是复读机
112 | 何炅点名
113 | 假死骗保案死者生前影像
114 | 全员恶人FNC
115 | 关晓彤
116 | 加点FUN就是偶像剧
117 | 医生还手无责
118 | 台湾相声艺术家吴兆南去世
119 | 向天歌刘泽煊
120 | 吴磊 会说话
121 | 周一围工作室点赞
122 | 周一围工作室道歉
123 | 周润发计划捐献全部财产
124 | 周游胡金铭太甜了
125 | 国足 印度
126 | 在20岁的年龄差之中疯狂徘徊
127 | 坐在阳台自拍从27楼摔下
128 | 夏浩然淘汰
129 | 大学生 精神病院
130 | 失联浙大博士遇难
131 | 奇葩说剪辑
132 | 奥斯卡还在摇摆
133 | 女排拿下第一局
134 | 宁泽涛
135 | 官鸿 情商高
136 | 小吴 快本
137 | 小吴通告已排到11月
138 | 小虎MVP
139 | 小虎状态不好
140 | 小鬼打假
141 | 帮亲友带礼物或被缴税
142 | 张一山 想回到小学
143 | 张宁 马布里
144 | 张常宁进攻
145 | 张杰 别说了
146 | 张杰 就是这么敢LIVE
147 | 张译 观众喜爱的男演员奖
148 | 张雨绮 我又不怕失去你
149 | 德约中文
150 | 心动的信号
151 | 心疼杨紫
152 | 快被武艺笑死
153 | 恶龙抓了一个程序员回来
154 | 把衣服塞进秋裤的那一刻
155 | 政府会计
156 | 新西游记 好笑
157 | 日本女排 塞尔维亚
158 | 朱一龙进山前
159 | 朱婷
160 | 李兰迪方否认恋情
161 | 李慧珍
162 | 李易峰 观众喜爱的男演员奖
163 | 李易峰拿奖
164 | 李易峰颁奖 皮
165 | 李盈莹立功
166 | 杨紫
167 | 杨芸晴回应舞台事故
168 | 杨芸晴鞋出问题
169 | 杰弗森退役
170 | 殷桃
171 | 毛不易曾因小S私信吴青峰
172 | 汕头人为纵火案
173 | 汕头纵火案犯罪嫌疑人被控制
174 | 江疏影
175 | 没按答案照抄 将家长踢出群
176 | 海贼王857
177 | 王刚
178 | 王刚老师竟然70了
179 | 王阳演技
180 | 王靖雯人设
181 | 甜茶 伦敦
182 | 甜茶粉丝说没有票
183 | 相互吐槽的鱼配了音
184 | 福建渔船在台湾海峡沉没
185 | 秃头吸盘拔河比赛
186 | 种三年的花海仅三天被毁
187 | 笔试第一面试资格却被取消
188 | 第12届金鹰节颁奖晚会
189 | 管泽元
190 | 苏芮琪给RNG加油
191 | 莉哥被行政拘留
192 | 莫小棋
193 | 袁姗姗 赵英俊
194 | 袁心玥发挥不好
195 | 被肖骁打动
196 | 西兰花
197 | 警方通报北大医院医生被打
198 | 费德勒输了
199 | 趵突泉景区回应质疑
200 | 这是什么跨越一切的爱情
201 | 迪丽热巴 观众喜爱的女演员奖
202 | 迪丽热巴李易峰双杯
203 | 邓伦
204 | 邱晨 我为什么还爱你
205 | 郭如彬为什么发给胡金铭
206 | 郭德纲
207 | 金沙江堰塞湖洪峰
208 | 金鹰奖 水
209 | 金鹰节颁奖晚会
210 | 阚清子
211 | 陌生女子推走童车
212 | 领导的表情包使用方法
213 | 马东改赛制
214 | 骗保
215 | 骗保事件 保险受益人
216 | 高云翔晒董璇美照
217 | 鬼纶
218 | 鲍曼 心脏病离世
219 | 鹿晗巡演郑州站取消 '''
220 |
221 | # content1 = '"#电影# Krysten Ritter photographed by Rachell Smith for Glamour Mexico (2016) '
222 |
223 | nlp_tools = NLPTools()
224 | # nlp_tools.__set_stop_words(False)
225 | result = nlp_tools.extract_keywords(content1, use_tfidf=False, topK=30) # , withWeight=False)
226 | print(result)
227 |
--------------------------------------------------------------------------------