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

”’
特殊分类视频信息分析 AI换脸
http://www.h4ck.org.cn
by obaby
obaby@mars
email:root@obaby.org.cn
date: 2020.09.11
”’

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()

csv.select(‘name’, ‘describe’, ‘uploader_id’).show()

# 分类信息读取
category_csv = spark.read.option(“header”,True).csv(“hdfs://localhost:9000/data2/porn_data_category.csv”)

category_csv.printSchema()

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()

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()

movie_cat_rdd.show()

# 只分析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]

name_counts_df = name_counts_rdd.toDF().toPandas()

name_counts_df.head()

# 视频标签数量展示
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_cat_rdd.filter(col(‘movie_name’).contains(‘鞠’)).select(‘movie_name’).show()

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