Porn Data Anaylize — AI换脸 分类数据浅析(github)

声明:本文中所有数据都是来源于第三方福利网站的数据,本文仅对数据中相关的信息进行解析。本人非常喜欢这些女明星,绝无抹黑之意。

from pyspark.sql.functions import col
import altair as alt
import pandas as pd
from matplotlib import pyplot as plt
%matplotlib inline
csv = spark.read.option("header",True).csv("hdfs://localhost:9000/data2/porn_data_movie.csv")
csv.printSchema()
root
 |-- id: string (nullable = true)
 |-- create: string (nullable = true)
 |-- update: string (nullable = true)
 |-- name: string (nullable = true)
 |-- describe: string (nullable = true)
 |-- source_id: string (nullable = true)
 |-- publish_time: string (nullable = true)
 |-- play_count: string (nullable = true)
 |-- good_count: string (nullable = true)
 |-- bad_count: string (nullable = true)
 |-- link_count: string (nullable = true)
 |-- comment_count: string (nullable = true)
 |-- designation: string (nullable = true)
 |-- category_id: string (nullable = true)
 |-- porn_site_id: string (nullable = true)
 |-- uploader_id: string (nullable = true)
 |-- producer: string (nullable = true)

csv.select('name', 'describe', 'uploader_id').show()
+------------------------+------------------------+-----------+
|                    name|                describe|uploader_id|
+------------------------+------------------------+-----------+
|    美女学生考试时被中出|                    null|          1|
|      无套中出内射(上)|            无套中出内射|          2|
|      无套中出内射(下)|            无套中出内射|          2|
|                极品嫩妹|                    null|          3|
|                骚妹妹 7|                    null|          3|
|漂亮美女完美身材甜美声音|漂亮美女完美身材甜美声音|          4|
|          jk捆绑萝莉束缚|                    null|          1|
|            最纯萝莉性爱|                    null|          1|
|          整容脸制服美女|                    null|          1|
|             星 调教萝莉|                    null|          5|
|        大一学生寝室自慰|                    null|          6|
|    超性感美女给你打飞机|                    null|          6|
|      超可爱萝莉下海资源|                    null|          6|
|      迷倒女儿然后慢慢操|                    null|          6|
|   精灵做爱高潮–影视剪辑|                    null|          7|
|        小萝莉被插到大叫|                    null|          6|
|    睡醒和白嫩女友来一发|                    null|          6|
|  双马尾萝莉甜美自慰诱惑|                    null|          8|
|        调教双马尾小萝莉|                    null|          1|
|    黑丝小萝莉最喜欢玩具|                    null|          9|
+------------------------+------------------------+-----------+
only showing top 20 rows
# 分类信息读取 
category_csv = spark.read.option("header",True).csv("hdfs://localhost:9000/data2/porn_data_category.csv")
category_csv.printSchema()
root
 |-- id: string (nullable = true)
 |-- create: string (nullable = true)
 |-- update: string (nullable = true)
 |-- name: string (nullable = true)
 |-- key: string (nullable = true)
 |-- describe: string (nullable = true)

movie_csv = csv.withColumnRenamed('name','movie_name')
movie_csv.select('movie_name', 'category_id', 'id').show()
movie_cat_rdd = movie_csv.select('movie_name','category_id').join(category_csv, movie_csv.category_id == category_csv.id, "inner")
movie_cat_rdd.select('movie_name', 'name', 'id').show()
+------------------------+------+---+
|              movie_name|  name| id|
+------------------------+------+---+
|    美女学生考试时被中出|萝莉系|  1|
|      无套中出内射(上)|萝莉系|  1|
|      无套中出内射(下)|萝莉系|  1|
|                极品嫩妹|萝莉系|  1|
|                骚妹妹 7|萝莉系|  1|
|漂亮美女完美身材甜美声音|萝莉系|  1|
|          jk捆绑萝莉束缚|萝莉系|  1|
|            最纯萝莉性爱|萝莉系|  1|
|          整容脸制服美女|萝莉系|  1|
|             星 调教萝莉|萝莉系|  1|
|        大一学生寝室自慰|萝莉系|  1|
|    超性感美女给你打飞机|萝莉系|  1|
|      超可爱萝莉下海资源|萝莉系|  1|
|      迷倒女儿然后慢慢操|萝莉系|  1|
|   精灵做爱高潮–影视剪辑|萝莉系|  1|
|        小萝莉被插到大叫|萝莉系|  1|
|    睡醒和白嫩女友来一发|萝莉系|  1|
|  双马尾萝莉甜美自慰诱惑|萝莉系|  1|
|        调教双马尾小萝莉|萝莉系|  1|
|    黑丝小萝莉最喜欢玩具|萝莉系|  1|
+------------------------+------+---+
only showing top 20 rows

import jieba.posseg as psg
 
def get_person_name_from_line(line):
    words = psg.cut(str(line))
    l =[]
    for x in words:
        if x.flag =='nr':
            l.append(x.word)
        # print(x.word, x.flag)
    return l
 
# 测试文字 http://m.lewenb.com/wapbook-1315-235763/
# document.body.innerText
w2 = get_person_name_from_line('朱宜锐的一只大手,隔着一层绵薄滑软的抚握住范冰冰那一只弹挺柔软的,他的手轻而不急地揉捏着……手掌间传来一阵坚挺结实、柔软无比而又充满弹性的美妙肉感,令他血脉贲张。看见澜那线条优美的秀丽桃腮上,一抹醉人的晕红正逐渐蔓衍到她那美艳动人的绝色娇靥上,他不由得色心一荡,他的手指逐渐收拢,轻轻地用两根手指轻抚范冰冰下那傲挺的峰顶,打着圈的轻抚揉压,找到那一粒娇小玲珑的挺突之巅的。他两根手指轻轻地夹住范冰冰那娇软柔小的,温柔而有技巧地一阵揉搓、轻捏。范冰冰被那从敏感地带的玉上传来的异样的感觉弄得浑身如被虫噬。一想到就连自己平常一个人都不好意思久看,不敢轻触的娇小被这样一个陌生而又恶心的男人(至少在她看来是这样)肆意揉搓轻抚,芳心不觉又感到万分的羞涩和莫名的刺激。朱宜锐一面揉捏着范冰冰那娇小的,一面继续在她的深处抽动着……')
print(w2)
['朱宜锐', '范冰冰', '贲', '张', '范冰冰', '范冰冰', '范冰冰', '朱宜锐', '范冰冰']
category_csv.filter(col('name')== 'AI换脸').show()
+---+--------------------+--------------------+------+----------+--------+
| id|              create|              update|  name|       key|describe|
+---+--------------------+--------------------+------+----------+--------+
|  9|7/5/2020 06:51:12...|27/8/2020 03:32:4...|AI换脸|aihuanlian|    null|
+---+--------------------+--------------------+------+----------+--------+

# 只分析AI换脸分类下的数据,虽然会有一部分遗漏,如果全部数据都进行解析会引入大量的无关数据(主要由于分词精度不够)
name_rdd = movie_cat_rdd.filter(col('category_id')=='9').select('movie_name').rdd
name_word_rdd = name_rdd.flatMap(get_person_name_from_line)
name_word_rdd.take(20)
['林允儿',
 '杨幂',
 '祖儿',
 '刘亦菲',
 '明星',
 '陈乔恩',
 '容祖儿',
 '林允儿',
 '明星',
 '宋',
 '王鸥',
 '迪丽',
 '刘亦菲',
 '明星',
 '迪丽',
 '陈乔恩',
 '刘亦菲',
 '刘亦菲',
 '迪丽',
 '陈乔恩']
# map reduce 进行词频统计
name_counts_rdd = name_word_rdd.map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y)
print('姓名统计一共:', str(name_counts_rdd.count()))
name_counts_rdd.sortBy(lambda a: a[1],ascending=False).collect()[:20]
[('明星', 33),
 ('杨幂', 27),
 ('迪丽', 27),
 ('刘亦菲', 17),
 ('高清', 14),
 ('杨颖', 13),
 ('林允儿', 10),
 ('鞠', 8),
 ('杨', 8),
 ('白虎', 6),
 ('刘诗诗', 6),
 ('宋雨琦', 6),
 ('佟丽娅', 6),
 ('宋', 5),
 ('陈乔恩', 5),
 ('爽', 5),
 ('范冰冰', 4),
 ('刘涛', 4),
 ('林志玲', 4),
 ('宋祖儿', 3)]

name_counts_df = name_counts_rdd.toDF().toPandas()
name_counts_df.head()
    _1  _2
0   杨幂  27
1   祖儿  1
2   明星  33
3   容祖儿 2
4   宋   5
# 视频标签数量展示
bars=alt.Chart(name_counts_df).mark_bar().encode(
    x=alt.X('_2', title='视频数量'),
    y=alt.Y('_1', title='明星姓名', sort='-x')
)
text = bars.mark_text(align='left', baseline='middle', dx=3).encode(text='_2')
(bars + text).properties(height=1400, width=800)

# 迪丽-> 迪丽热巴
# 对于分词之后的姓名可以做进一步的解析,通过人工分析可以修正解析到的错误姓名。
# https://intellipaat.com/community/11489/filter-spark-dataframe-on-string-contains
movie_cat_rdd.filter(col('movie_name').contains('迪丽')).select('movie_name').show()
+-----------------------------------+
|                         movie_name|
+-----------------------------------+
|重金购买长相酷似女星迪丽XX的性感...|
|           迪丽热巴刘亦菲等明星合集|
|             迪丽热巴换上盛装自己嗨|
|               Al迪丽热巴大长腿中出|
|                       低配迪丽热巴|
|                    AI换脸 迪丽热巴|
|                           迪丽热巴|
|            AI换脸 迪丽热巴大战炮机|
|                 AI迪丽热巴自慰绝美|
|     [AI换脸] 迪丽热巴!演艺圈淫...|
|                 [AI换脸] 迪丽热巴2|
|【明星淫梦】人工智能AI让女神们下...|
|                 【AI换脸】迪丽热巴|
|            国产,酷似迪丽热巴 爆菊|
|                    AI换脸 迪丽热巴|
|                 [AI换脸] 迪丽热巴3|
|           迪丽热巴唯美身材激情自慰|
|                           迪丽热巴|
|                           迪丽热巴|
|                  迪丽热巴 智能换脸|
+-----------------------------------+
only showing top 20 rows
movie_cat_rdd.filter(col('movie_name').contains('鞠')).select('movie_name').show()
+-------------------------------+
|                     movie_name|
+-------------------------------+
|             宋轶鞠婧祎模特洗礼|
|               鞠婧祎和一群男人|
|【9uu神手】AI换脸之鞠婧祎 骚...|
|                  AI换脸 鞠婧炜|
|          【AI】鞠婧祎 短发空乘|
|         Al换脸鞠婧祎双胞胎服侍|
|                         鞠婧祎|
|                  AI换脸鞠婧祎 |
|          原创ai-宋轶鞠婧祎长腿|
|         ai换脸鞠婧祎干朋友妻子|
|           AI换脸女神鞠婧祎合集|
|           AI原创鞠婧祎激情颜射|
+-------------------------------+

# 除了部分人名解析有问题,另外还有一部分数据原本不是人名,解析成了人名。例如玉足、痴汉等等~~
# 通过视频数量侧面也反映出了女明星在宅男中的热度?或者流行程度?

github: https://github.com/obaby/Porn-Data-Anaylize

分享文章:

猜你喜欢:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注