Nhắc đến cụm từ JAV, mình dám chắc phải đến 96.69% thanh niên Việt Nam đều biết nó là gì? :D
Tuy vậy, để được gọi là fan của JAV thì có lẽ không có nhiều người. Bởi vì để được coi là fan thì bạn phải am hiểu sâu sắc về JAV, từ thông tin diễn viên, nhà sản xuất, ngày phát hành, … chứ không phải là chỉ chăm chú xem không bỏ sót một tập phim nào đâu nhé!
Bài hôm nay, mình sẽ giúp các bạn bổ sung thêm một số kiến thức còn thiếu nếu bạn là người đang mong muốn được trở thành fan của JAV, thông qua việc phân tích một số thông tin về các diễn viên JAV.
Đầu tiên, chúng ta sẽ cùng nhau kiểm chứng xem JAV phổ biến trên thế giới như thế nào (tính từ tháng 09/2020 đến tháng 09/2021)? Có bao nhiêu nước/khu vực quan tâm đến JAV và đâu là nơi mà JAV được quan tâm nhiều nhất?
Vào Google Trends và gõ từ khóa JAV, kết quả:
JAV hiện diện ở 150 nước/khu vực và không ngạc nhiên lắm khi Việt Nam của chúng ta đứng đầu danh sách xét về mức độ quan tâm đến JAV. Tiếp sau đó là người bạn Đông Nam Á (Myanmar), các anh em Đông Dương (Campuchia, Lào). Nhà giàu Đông Á (Hàn Quốc) cũng nằm trong top 5. Điều thú vị là Myanmar và Indonesia, một nước theo Phật giáo và một nước theo Hồi giáo, đều rất cấm kị những sản phẩm tình dục, khiêu dâm, nhưng JAV lại rất phổ biến ở nước này. Thậm chí là với từ khóa Yui Hatano thì top 1 chính là Myanmar. Riêng Nhật Bản, quê hương của JAV, thì lại không thấy xuất hiện trong top 10 danh sách, có thể là do người dân Nhật Bản thường tìm kiếm bằng chữ Hiragana thay vì dùng chữ Latin như đa số các quốc gia và vùng lãnh thổ khác.
Nếu muốn khám phá chi tiết hơn, bạn có thể click chuột vào Việt Nam, sẽ thu được kết quả:
Xét trong phạm vi lãnh thổ Việt Nam thì các anh em Yên Bái có sở thích mạnh mẽ nhất với JAV. Tiếp theo là Điện Biên, Thanh Hóa, Thái Bình, Hòa Bình trong top 5. Hà Nội và Hồ Chí Minh, hai thành phố lớn nhất nước, tốc độ Internet nhanh nhất nước nhưng lại có vẻ thờ ơ với món này. Hai vị trí tương ứng của 2 thành phố đó trên bảng xếp hạng lần lượt là 53 và 60. Có lẽ các thanh niên ở 2 thành phố này còn có nhiều thú vui khác ngoài JAV. :D
Thông tin về các diễn viên JAV được thu thập từ 2 nguồn, tại https://japanpornjav.com và tại https://www.kaggle.com/twopothead/japanese-pornstars-and-adult-videos.
Đối với nguồn thứ nhất thì mình phải viết code python, sử dụng thư viện Beautifulsoup4 để lấy về, còn nguồn thứ 2 thì chỉ đơn giản là download file csv. Sau đó, qua một số bước tiền xử lý, mình gộp kết quả từ 2 nguồn đó lại thành một dữ liệu chung duy nhất, ghi thành file jp_actress_info.csv, với các thông tin như sau:
STT | Tên Features | Ý Nghĩa |
---|---|---|
1 | Name | Tên diễn viên trong tiếng Nhật |
2 | Image_URL | Đường dẫn đến ảnh đại diện của diễn viên |
3 | Birthday | Ngày sinh của diễn viên |
4 | Blood_Type | Nhóm máu của diễn viên |
5 | Breast_Size | Kích thước vòng 1 của diễn viên |
6 | Waist_Size | Kích thước vòng 2 của diễn viên |
7 | Height | Chiều cao của diễn viên |
8 | Number_HD_Video_Online | Số lượng HD video trên trang https://japanpornjav.com của diễn viên |
9 | Cup_Size | Kích thước áo ngực của diễn viên |
10 | Hips | Kích thước vòng 3 của diễn viên |
11 | Home_Town | Quê hương của diễn viên |
12 | Hobby | Sở thích của diễn viên |
Có tất cả 1220 diễn viên JAV trong bộ dữ liệu này. Ví dụ thông tin của một vài diễn viên:
Theo quan sát thống kê thì có khá nhiều thông tin bị thiếu trong mỗi feature:
Int64Index: 1220 entries, 0 to 1219
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 1220 non-null object
1 Image_URL 1220 non-null object
2 Birthday 1143 non-null object
3 Blood_Type 608 non-null object
4 Breast_Size 1220 non-null object
5 Waist_Size 1220 non-null object
6 Height 1220 non-null object
7 Number_HD_Video_Online 1220 non-null int64
8 Cup_Size 342 non-null object
9 Hips 406 non-null object
10 Home_Town 293 non-null object
11 Hobby 343 non-null object
Để cho việc phân tích được sát với thực tế nhất thì mình sẽ chỉ sử dụng những features không bị thiếu.
Từ thông tin về ngày sinh, sau khi loại bỏ đi những diễn viên mà thiếu hoặc sai định dạng thông tin này, chúng ta sẽ tính toán tuổi của từng diễn viên tính đến thời điểm hiện tại.
df_age = df_ja[['Name', 'Image_URL', 'Birthday']]
df_age['Birthday'] = pd.to_datetime(df_age['Birthday'], errors='coerce')
df_age = df_age.dropna(subset=['Birthday'])
df_age['Age'] = df_age['Birthday'].apply(lambda x: pd.to_datetime('today').year - x.year)
print(df_age.shape)
df_age.head()
Còn 1141 diễn viên có đủ thông tin ngày sinh và độ tuổi.
Xem xét phân bố độ tuổi của các diễn viên:
dist_data = df_age[df_age['Age'].notnull()]
fig = ff.create_distplot([dist_data['Age']], group_labels = ['Age of JA'])
fig.show()
# plot violin chart for Age feature
fig = go.Figure(data=go.Violin(
y=df_age['Age'],
box_visible=True,
line_color='red',
meanline_visible=True,
opacity=0.5,
x0='Age',
points='all'
)
)
fig.update_layout(
height=600,
margin=dict(t=30, b=30, l=30, r=30)
)
fig.show()
Nhận xét:
Có 6 diễn viên ở độ tuổi 19: あまつか亜夢, 朝田ひまり, 北城希, 小野六花, 和知すばる, và 天ノうた.
df_age_min = df_age[df_age['Age'] == 19]
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_age_min['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Còn diễn viên lớn tuổi nhất là 真梨邑ケイ:
df_age_max = df_age[df_age['Age'] == 64]
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_age_max['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Từ ngày sinh, chúng ta còn có thể suy ra cung hoàng đạo của mỗi diễn viên:
df_age['Zodiac_Sign'] = df_age['Birthday'].apply(lambda x: zodiac_sign(x.day, x.month))
zodiac_signs = ' '.join(df_age['Zodiac_Sign'])
font_path = 'font/NotoSerifCJKjp-Light.otf'
mask = np.array(Image.open('alice_mask.png'))
...
# create a wordcloud
wordcloud = WordCloud(background_color='white',
mask=mask,
font_path=font_path,
max_words=2000,
contour_width=1,
contour_color='steelblue',
stopwords=stopwords,
max_font_size=500
).generate(zodiac_signs)
wordcloud.to_file("zodiac.png")
Nhân Mã là chòm sao phổ biến nhất trong các diễn viên được phân tích. Tiếp đến là Cự Giải, Bạch Dương, Song Ngư, ….
Chúng ta sẽ tách riêng thông tin về kích thước 3 vòng từ bộ dữ liệu ban đầu, và loại bỏ đi những thông tin thiếu, sai rồi tiến hành phân tích:
df_bwh = df_ja[['Name', 'Image_URL', 'Breast_Size', 'Waist_Size', 'Hips']]
df_bwh.drop(df_bwh.index[df_bwh["Breast_Size"].apply(lambda x: not (x.strip().isnumeric()))], axis=0, inplace=True)
df_bwh.drop(df_bwh.index[df_bwh["Waist_Size"].apply(lambda x: not (x.strip().isnumeric()))], axis=0, inplace=True)
df_bwh['Breast_Size'] = df_bwh['Breast_Size'].astype(np.float32)
df_bwh['Waist_Size'] = df_bwh['Waist_Size'].astype(np.float32)
# remove outlier
df_bwh = df_bwh[df_bwh['Waist_Size'] < 80]
df_bwh = df_bwh[df_bwh['Breast_Size'] > 40]
Có 1157 diễn viên JAV cho chúng ta phân tích. Riêng thông tin về vòng 3, nếu loại bỏ hết những giá trị NaN thì số lượng diễn viên còn lại khá khiêm tốn (406) nên mình sẽ để nguyên.
fig = go.Figure()
for fe in ['Breast_Size', 'Waist_Size', 'Hips']:
fig.add_trace(go.Violin(x=[fe]*df_bwh.shape[0],
y=df_bwh[fe],
text='Dist plot for ' + fe.upper(),
name=fe.upper(),
box_visible=True,
meanline_visible=True,
points='all'))
fig.update_layout(
height=800,
margin=dict(t=30, b=30, l=30, r=30)
)
fig.show()
Nhận xét:
Thử xem có diễn viên nào đạt chuẩn số đo 3 vòng không?
df_bwh_standard = df_bwh[(df_bwh['Breast_Size'] == 90) & (df_bwh['Waist_Size'] == 60) & (df_bwh['Hips'] == 90)]
print(df_bwh_standard.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_bwh_standard['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Chỉ có 1 người duy nhất, đó là 白石茉莉奈.
Còn đối với bộ số trung bình 3 vòng thì sao, liệu có bao nhiêu diễn viên?
df_bwh_mean = df_bwh[(df_bwh['Breast_Size'] == 86) & (df_bwh['Waist_Size'] == 58) & (df_bwh['Hips'] == 86)]
print(df_bwh_mean.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_bwh_mean['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Có 5 người: 吉沢明歩, 藤井シェリー, 水樹りさ, 初美沙希, 向井しほ:
Tiếp tục xem cô nàng nào có vòng 1 lớn nhất?
df_breast_max = df_bwh[df_bwh['Breast_Size'] == 115]
print(df_breast_max.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_breast_max['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Đó là 夢野まりあ, nhìn hình này thì quả là to thật, :D
Idol nào có vòng 2 nhỏ nhất?
df_waist_min = df_bwh[df_bwh['Waist_Size'] == 49]
print(df_waist_min.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_waist_min['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Câu trả lời là もりの小鳥:
Cuối cùng, diễn viên có vòng 3 lớn nhất là …
df_hips_max = df_bwh[df_bwh['Hips'] == 97]
print(df_hips_max.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_hips_max['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
小口田桂子:
Ở VN, để trở thành người mẫu, hot girl, hay idol của giới trẻ thì chiều cao cũng là một yếu tố. Thử xem đối với các diễn viên JAV của chúng ta thì như nào.
df_height = df_ja[['Name', 'Image_URL', 'Height']]
df_height.drop(df_height.index[df_height["Height"].apply(lambda x: not (x.strip().isnumeric()))], axis=0, inplace=True)
df_height['Height'] = df_height['Height'].fillna(-1).astype(np.float32).replace(-1, np.nan)
print(df_height.shape)
df_height.head()
Có 1163 diễn viên phục vụ cho việc phân tích này. Chiều cao của các diễn viên thể hiện qua đồ thị distplot và violin như sau:
dist_data = np.array(df_height['Height'])
dist_data = [x for x in dist_data if np.isnan(x) == False]
fig = ff.create_distplot([dist_data], group_labels = ['distplot'])
fig.update_layout(margin=dict(t=30, b=30, l=30, r=30))
fig.show()
# plot violin chart for Height feature
fig = go.Figure(data=go.Violin(
y=df_height['Height'],
box_visible=True,
line_color='green',
meanline_visible=True,
opacity=0.5,
x0='Height',
points='all'
)
)
fig.update_layout(
height=600,
margin=dict(t=30, b=30, l=30, r=30)
)
fig.show()
Nhận xét:
Với chiều cao như thế này, ta thấy nó khá tương đồng với chiều cao trung bình của người dân Nhật Bản. Từ đó có thể kết luận rằng chiều cao không phải là yếu tố cần thiết, quan trọng để trở thành một diễn viên JAV.
Hai diễn viên có chiều cao lớn nhất (178cm) là 佐藤エル và 司ミコト:
df_height_max = df_height[df_height['Height'] == 178]
print(df_height_max.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_height_max['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Còn diễn viên có chiều cao thấp nhất (142cm) là 工藤ララ:
df_height_min = df_height[df_height['Height'] == 142]
print(df_height_min.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_height_min['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Kích thước áo ngực thông thường sẽ tỉ lệ thuận với kích thước vòng 1 của các chị em. Tuy nhiên, thực tế không hoàn toàn vậy, bởi vì một số chị em có sở thích độn ngực đó mà, :D
df_cup = df_ja[['Name', 'Image_URL', 'Cup_Size']]
df_cup.drop(df_cup.index[df_cup["Cup_Size"].apply(lambda x: (pd.isna(x)))], axis=0, inplace=True)
print(df_cup.shape)
df_cup.head()
Thông tin về Cup_size không có nhiều, chỉ có 342 diễn viên có thông tin này trong bộ dữ liệu.
fig = px.bar(
df_cup_gr,
x=df_cup_gr.index,
y='Count',
color='Count',
text='Count'
)
fig.show()
Mình thì không rành về khoản kích thước áo ngực của hội chị e lắm, nhưng hình như là tăng dần theo thứ tự A, B, C, D, … Nhìn vào đồ thị thì ta thấy đa số các JAV idols của chúng ta có Cup_Size ở mức trung bình trở lên, tức là mức D, E, F, … Từ đó suy ra rằng, mặc dù kích thước vòng 1 có thể không to lắm, nhưng đa số các diễn viên đều thích sử dụng các áo ngực có kích thước lớn hơn, có lẽ là để trông hấp dẫn cánh đàn ông hơn, :D
きみの奈津 và きみの奈津 là hai diễn viên mặc áo ngực lớn nhất và nhỏ nhất, tương ứng.
df_cup_size_max = df_cup[df_cup['Cup_Size'] == 'L']
print(df_cup_size_max.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_cup_size_max['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
df_cup_size_min = df_cup[df_cup['Cup_Size'] == 'A']
print(df_cup_size_min.Name)
ims = [Image.open(requests.get(url, stream=True).raw) for url in df_cup_size_min['Image_URL']]
ipyplot.plot_images(ims, max_images=20, img_width=200)
Liệu rằng nhóm máu có liên quan đến nghề nghiệp không nhỉ?
df_blood = df_ja[['Name', 'Image_URL', 'Blood_Type']]
df_blood.drop(df_blood.index[df_blood["Blood_Type"].apply(lambda x: x not in ['O', 'A', 'B', 'AB'])], axis=0, inplace=True)
print(df_blood.shape)
df_blood.head()
Chúng ta có 605 diễn viên để phân tích.
df_blood_gr = df_blood.groupby('Blood_Type')['Name'].count()
df_blood_gr = df_blood_gr.to_frame()
df_blood_gr.columns = ['Count']
df_blood_gr = df_blood_gr.sort_values('Count', ascending=False)
df_blood_gr.style.background_gradient(cmap='plasma_r')
Hai nhóm máu A và O có số lượng diễn viên nhiều nhất, tiếp đến là nhóm máu B và AB cuối cùng. Khả năng là những phụ nữ có nhóm máu A, O thường sẽ chọn nghề trở thành diễn viên JAV (nếu họ ở Nhật Bản) ???
Các JAV idols của chúng ta không phải chỉ có sở thích đóng phim đâu nhé. Thực ra, đóng phim người lớn là một công việc rất nặng nhọc. Vì thế mà các diễn viên cũng có rất nhiều sở thích, thú vui khác nhau để giải trí, làm dịu bớt mệt mỏi, căng thẳng.
df_hobby = df_ja[df_ja['Hobby'].notnull()]
hobby_str = ' '.join(df_hobby['Hobby'])
font_path = 'font/NotoSerifCJKjp-Light.otf'
mask = np.array(Image.open('heart_mask.jpg'))
...
# create a wordcloud
wordcloud = WordCloud(background_color='white',
mask=mask,
font_path=font_path,
max_words=2000,
contour_width=2,
contour_color='steelblue',
stopwords=stopwords,
max_font_size=500
).generate(hobby_str)
wordcloud.to_file("alice.png")
# show worldcloud picture
plt.figure(figsize=(8,8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
Có thể thấy các thú vui của diễn viên JAV cũng rất đa dạng, vừa đời thường, vửa thời thượng: Nấu ăn, đi mua sắm, hát Karaoke, chơi đàn Piano, khiêu vũ, xem phim, … và rất nhiều sở thích khác nữa.
Nếu như ở VN, mọi người thường nói, người Nghệ An, Hà Tĩnh thường học rất giỏi, nhiều người làm quan to, sếp lớn. Không biết liệu ở Nhật Bản, yếu tố quê hương có ảnh hưởng đến nghề nghiệp hay không?
Trong bộ dữ liệu đã có thông tin về nơi sinh ra của các diễn viên JAV rồi, nhưng để có cái nhìn trực quan hơn thì chúng ta sẽ cần thêm thông tin về toạ độ địa lý của nơi đó, rồi hiển thị lên bản đồ.
# get latitude & longitude
geolocator = Nominatim(user_agent='Home_Town')
df_birthplace['Home_Town Coord'] = df_birthplace['Home_Town'].apply(geolocator.geocode).apply(lambda x: (x.latitude, x.longitude))
# separate latitude & longtitude into 2 different columns
df_birthplace[['Latitude', 'Longtitude']] = df_birthplace['Home_Town Coord'].apply(pd.Series)
df_birthplace.drop(['Home_Town Coord'], axis=1, inplace=True)
df_birthplace.head()
hmap = folium.Map(location=[35.9, 139.8], control_scale=True, attr='USGS style', zoom_start=5)
HeatMap(hm_data, rasdius=10).add_to(hmap)
Tokyo là nơi sản sinh ra nhiều diễn viên JAV nhất. Điều này có vẻ không giống với Việt Nam. Ở Việt Nam thì thường các miền quê nghèo, không có việc làm thì các chị em mới chọn theo nghề này. Còn ở Nhật Bản, Tokyo là thành phố sầm uất bậc nhất lại là quê hương của rất nhiều JAV idols. Điều này có lẽ xuất phát từ văn hóa và pháp luật của Nhật Bản, khi mà JAV là một nghề nghiệp được coi là hợp pháp, và có thu nhập tương đối cao. Và một lý do khác, rất có thể chốn đô thị xa hoa, lộng lẫy đã khiến nhiều cô gái muốn làm giàu nhanh chóng, thay vì phải ngồi làm công việc văn phòng với bàn giấy và máy tính tẻ nhạt.
Thông thường, tuổi tác thường tỉ lệ nghịch với kích thước 3 vòng. Hãy xem điều đó có đúng với các diễn viên JAV hay không?
Trước tiên, ta sẽ tạo ra một dataframe chỉ chứa các thông tin về tuổi và kích thước 3 vòng. Sau đó, phân chia tuổi thành cách nhóm A, B, C tương ứng với các khoảng 15-30, 30-40, và > 40 tuổi.
Mối quan hệ giữa độ tuổi và kích thước 3 vòng được thể hiện trên đồ thị như sau:
Nhìn vào đây ta thấy, có vẻ như tuổi tác không ảnh hưởng quá nhiều đến kích thước 3 vòng, khi mà mức trung bình của cả 3 nhóm tuổi đều là 87cm, 85cm, và 87cm tương ứng với vòng 1, vòng 2, và vòng 3. Thậm chí là đối với vòng 1, nhóm diễn viên lớn tuổi có kích thước vòng 1 còn nhỉnh hơn 1 chút xíu so với nhóm nhỏ tuổi. Điều này cũng khá dễ hiểu thôi, bởi vì kích thước 3 vòng là yếu tố quan trọng để thu hút khán giả của cac diễn viên JAV, nên họ sẽ cực kỳ chăm chút. Nếu vì tuổi cao mà kích thước không đạt yêu cầu để hấp dẫn nữa thì chắc là họ sẽ giải nghệ.
Trên đây là bức tranh tổng quát về các JAV idols ở xứ sở mặt trời mọc. Hi vọng qua bài viết này, các bạn hiểu thêm được phần nào về nghành công nghiệp phim người lớn nói riêng và việc vận dụng Data Science để tìm ra Insight từ các dữ liệu nói chung. Sau khi đọc xong bài này, các nam thanh niên có thể tự tin chém gió về thần tượng của mình rồi đó !!!
Toàn bộ code của bài này, các bạn có thể tham khảo tại đây.