所谓“伪娘”,即通过女装、化妆等手法让外人认为是女性的男性,我们通常可以在各地的漫展上看到相当数量的“伪娘”,这也是二次元文化中的萌属性之一。
而“药娘”则不同,简单来说就是心理性别为女,生理性别为男的跨性别者,他们通常是依靠激素药物改变内分泌,从而让自己身体特征逐渐接近女性。这个群体的人数非常稀少且又特殊,直至去年(2016年?根据参考链接文章编辑时间推测。)才在网络上出现相关讨论,但目前并没有引起社会的广泛关注。
'''
特殊分类视频信息分析 TS伪娘
http://www.h4ck.org.cn
by obaby
obaby@mars
email:root@obaby.org.cn
date: 2020.09.14
'''
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/data3/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) |-- image: string (nullable = true) |-- thumb: string (nullable = true) |-- thumb_raw: string (nullable = true) |-- preview: string (nullable = true) |-- video_link1: string (nullable = true) |-- video_link2: string (nullable = true) |-- video_link3: string (nullable = true) |-- video_link4: string (nullable = true) |-- mp4: string (nullable = true) |-- m3u8: 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) |-- thunder_url: 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', 'category_id').show()
+------------------------+------------------------+-----------+ | name| describe|category_id| +------------------------+------------------------+-----------+ | 美女学生考试时被中出| null| 1| | 无套中出内射(上)| 无套中出内射| 1| | 无套中出内射(下)| 无套中出内射| 1| | 极品嫩妹| null| 1| | 骚妹妹 7| null| 1| |漂亮美女完美身材甜美声音|漂亮美女完美身材甜美声音| 1| | jk捆绑萝莉束缚| null| 1| | 最纯萝莉性爱| null| 1| | 整容脸制服美女| null| 1| | 星 调教萝莉| null| 1| | 大一学生寝室自慰| null| 1| | 超性感美女给你打飞机| null| 1| | 超可爱萝莉下海资源| null| 1| | 迷倒女儿然后慢慢操| null| 1| | 精灵做爱高潮–影视剪辑| null| 1| | 小萝莉被插到大叫| null| 1| | 睡醒和白嫩女友来一发| null| 1| | 双马尾萝莉甜美自慰诱惑| null| 1| | 调教双马尾小萝莉| null| 1| | 黑丝小萝莉最喜欢玩具| null| 1| +------------------------+------------------------+-----------+ only showing top 20 rows
# 分类信息读取
category_csv = spark.read.option("header",True).csv("hdfs://localhost:9000/data3/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) |-- image: string (nullable = true)
movie_csv = csv.withColumnRenamed('name','movie_name')
movie_csv.select('movie_name', 'category_id', 'id').show()
+------------------------+-----------+---+ | movie_name|category_id| id| +------------------------+-----------+---+ | 美女学生考试时被中出| 1| 1| | 无套中出内射(上)| 1| 2| | 无套中出内射(下)| 1| 3| | 极品嫩妹| 1| 4| | 骚妹妹 7| 1| 5| |漂亮美女完美身材甜美声音| 1| 6| | jk捆绑萝莉束缚| 1| 7| | 最纯萝莉性爱| 1| 8| | 整容脸制服美女| 1| 9| | 星 调教萝莉| 1| 10| | 大一学生寝室自慰| 1| 11| | 超性感美女给你打飞机| 1| 12| | 超可爱萝莉下海资源| 1| 13| | 迷倒女儿然后慢慢操| 1| 14| | 精灵做爱高潮–影视剪辑| 1| 15| | 小萝莉被插到大叫| 1| 16| | 睡醒和白嫩女友来一发| 1| 17| | 双马尾萝莉甜美自慰诱惑| 1| 18| | 调教双马尾小萝莉| 1| 19| | 黑丝小萝莉最喜欢玩具| 1| 20| +------------------------+-----------+---+ only showing top 20 rows
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
# 由于数据来自于不同的网站,所以分类名称可能有所区别,通过筛选筛选出所有的TS分类。
category_csv.filter(col('name').contains('人妖')).show()
+---+--------------------+--------------------+--------+------+--------+--------------------+ | id| create| update| name| key|describe| image| +---+--------------------+--------------------+--------+------+--------+--------------------+ | 26|7/5/2020 08:12:54...|14/9/2020 00:06:3...| 人妖|renyao| null|https://9uu88.com...| |113|11/9/2020 07:14:5...|11/9/2020 07:56:5...|人妖视频| ry| null| null| +---+--------------------+--------------------+--------+------+--------+--------------------+
name_rdd = movie_cat_rdd.filter(col('category_id').isin({'26', '113'}) ).select('movie_name').rdd
name_rdd.take(10)
[Row(movie_name='加勒比女海盗2'), Row(movie_name='小伪娘爱自慰'), Row(movie_name='惠奈酱姐妹sm'), Row(movie_name='ts张思妮走廊大胆露出'), Row(movie_name='两个假屌女孩'), Row(movie_name='大水球奶加奶油大喷枪'), Row(movie_name='双性人互爱'), Row(movie_name='人妖和我一起3p美女'), Row(movie_name='好美的人妖重口味的福利'), Row(movie_name='赵恩静')]
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)
exclude_words = ['高潮', '爽', '美的', '帅哥', '清秀',
'高清', '後','黑丝', '太猛','老公', '啊啊啊', '贞操']
name_counts_rdd =name_counts_rdd.filter(lambda x : x[0] not in exclude_words)
print('姓名统计一共:', str(name_counts_rdd.count()))
name_counts_rdd.sortBy(lambda a: a[1],ascending=False).collect()[:20]
[('小乔', 36), ('张思妮', 34), ('曦', 31), ('宝贝', 27), ('雪儿', 26), ('王可心', 25), ('安德', 23), ('小姐姐', 23), ('赵恩静', 23), ('龚', 22), ('惠奈', 17), ('刘卡思', 15), ('陈雯雯', 15), ('静雅', 15), ('萌', 14), ('雯', 14), ('枫', 13), ('思瑶', 13), ('胡', 13), ('金韩雅', 11)]
name_counts_df = name_counts_rdd.toDF().toPandas()
name_counts_df.head()
_1 _2 0 安德 23 1 王可心 25 2 大秀 2 3 乔胖男 1 4 小萝莉 5
# 视频标签数量展示
bars=alt.Chart(name_counts_df).mark_bar().encode(
x=alt.X('_2', title='视频数量'),
y=alt.Y('_1', title='TS姓名', sort='-x')
)
text = bars.mark_text(align='left', baseline='middle', dx=3).encode(text='_2')
(bars + text).properties(height=4000, width=800)
movie_cat_rdd.filter(col('movie_name').contains('曦')).select('movie_name').show()
+-------------------------------------+ | movie_name| +-------------------------------------+ | 微博网红巨乳顾灵曦2合集| |最新极品巨乳女神心妍小公主『李妍曦...| | 重 磅 福 利 最 新 购 买 秀...| | 嫩模龙泽美曦宾馆与土豪援交| |秀人网嫩模龙泽美曦宾馆与土豪援交被...| | 微博网红巨乳顾灵曦 1| | 微博网红顾灵曦合集| |在床上爽到叫爸爸!網路瘋傳小模陳曦...| | 微博网红顾灵曦毒龙口交| | 丑曦福利小视频| | 主播丑曦6月大秀录制| | 美女主播丑曦 最新福利小视频露脸...| |重磅福利万众期待,超美的大学生御姐...| | 模特子曦自拍| | 微博网红巨乳顾灵曦 1| | 微博网红顾灵曦| | 美妖韩若曦唯美啪啪大秀| | 美乳高冷野模子曦宾馆扣穴全裸私拍| | 微博巨乳网红顾灵曦口交| | 微博网红巨乳顾灵曦baby12月和...| +-------------------------------------+ only showing top 20 rows
参考链接: https://zhuanlan.zhihu.com/p/25401864
最新数据变化20220407:
2 comments
我差点错过这么好一篇文章。
你看看,是不是差点错过各种伪娘小姐姐~~