Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Автоматизация интернет-знакомств
Search
Moscow Python Meetup
PRO
May 23, 2016
Programming
1
1.1k
Автоматизация интернет-знакомств
Азамат Галимжанов @ Moscow Python 35
Moscow Python Meetup
PRO
May 23, 2016
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №106. Евгений Блинов (The Mutating Company, Founder). Суперфункции
moscowdjango
PRO
0
58
Moscow Python Meetup №106. Валерий Карпузов (SmartFX, Team Lead). Пиши, сокращай — Code Golf на Python
moscowdjango
PRO
0
97
Moscow Python Meetup №106. Николай Казак (Технический лидер роботизации бизнес-процессов, МТС Финтех). RPA по-взрослому
moscowdjango
PRO
0
40
Moscow Python Meetup №105. Кирилл Гладких (ООО Штаб, Python разработчик). Как вайбкодить по-сениорски
moscowdjango
PRO
0
120
Moscow Python Meetup №105. Пётр Андреев (МФТИ, лектор по курсу Advanced Python). Дотянуться до кремния. HighLoad Python: SIMD, GPU
moscowdjango
PRO
0
52
Moscow Python Meetup №105. Антон Важнецов (K2 Cloud, Тимлид). Подход к глубоким изменениям. Миграция SDN в боевом облаке на Python
moscowdjango
PRO
0
44
Moscow Python Meetup №104. Как научить Алису рецептам дореволюционной кухни
moscowdjango
PRO
0
47
Moscow Python Meetup №104. Оптимизация сервиса АБ тестирования или как уйти от Django ORM к Fastapi query builder
moscowdjango
PRO
0
73
Moscow Python Meetup №104. CI/CD Pytest для тестирования качества данных здравоохр. в Великобритании
moscowdjango
PRO
0
50
Other Decks in Programming
See All in Programming
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
340
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
700
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
1.4k
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
AtCoder Conference 2025
shindannin
0
900
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
15
3.9k
Grafana:建立系統全知視角的捷徑
blueswen
0
270
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.5k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
760
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
250
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
120
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Speed Design
sergeychernyshev
33
1.5k
Darren the Foodie - Storyboard
khoart
PRO
1
2.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
Transcript
Автоматизация знакомств в Интернете
• Азамат, 26 лет, бородат Знакомство Старая фотка
Знакомство • Азамат, 26 лет, бородат • 5 лет python
Знакомство • Азамат, 26 лет, бородат • 5 лет python
• Стартап «ГдеМатериал»
Знакомство • Азамат, 26 лет, бородат • 5 лет python
• Стартап «ГдеМатериал» • В Москве недавно
Знакомство с тиндером • Приложение для знакомств
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится
Знакомство с тиндером • Приложение для знакомств • Нравится \
не нравится • Занимает много времени
Знакомство с существующими решениями • Тривиальные
Знакомство с существующими решениями • Тривиальные • Нетривиальные
Знакомство с существующими решениями • Тривиальные • Нетривиальные • tinderbox
Знакомство с красотой • Google
Знакомство с красотой • Google
Знакомство с красотой • Симметрия
Знакомство с красотой • Симметрия
Знакомство с Machine Learning
Знакомство с Machine Learning • Сложно?
Знакомство с Machine Learning • Данные • Обучение • Предсказание
Знакомство с dlib • Библиотека ML, написана на С++ •
Есть встроенные методы для нахождения лица • shape_predictor_68_face_landmarks.dat
None
Знакомство с dlib detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') [np.array([p.x,
p.y]) for p in predictor(img, rects[0]).parts()]
None
ratios = [] points = get_landmarks(img) combinations = itertools.combinations(points, 4)
for cmb in combinations: d1 = np.linalg.norm(cmb[0] - cmb[1]) d2 = np.linalg.norm(cmb[2] - cmb[3]) ratio = d1 / d2 ratios.append(ratio)
combinations = list(itertools.combinations(landmarks, 4)) cmbs = np.asarray(combinations) # Each combination
is 4 points column_1 = cmbs[:,0] column_2 = cmbs[:,1] column_3 = cmbs[:,2] column_4 = cmbs[:,3] # Get distances between each pair of points diff1 = column_1 - column_2 diff2 = column_3 - column_4 d1 = np.sqrt((diff1 * diff1).sum(axis=1)) d2 = np.sqrt((diff2 * diff2).sum(axis=1)) # Get ratio of these distances features = d1 / d2
Знакомство с scikit-learn • Популярная python ML библиотека • Интеграция
с numpy, scipy
pictures = Picture.objects.exclude(rating=0) for pic in pictures: img = Image.open(pic.img.path)
faces, landmarks = get_landmarks(img) pic.features = get_features(landmarks) pic.save()
pictures = Picture.objects.exclude(rating=0).exclude(features=None) features = np.array(pictures.values_list('features', flat=True)) ratings = np.array(pictures.values_list('rating',
flat=True))
print len(features[0])
print len(features[0]) 31465
None
pca = decomposition.PCA(n_components=200) pca.fit(features) features = pca.transform(features)
None
regr = linear_model.LinearRegression() regr.fit(features, ratings)
features = get_features(landmarks) features = pca.transform(features.reshape(1, -1)) regr.predict(features) [ 8.02760153]
Correlation: 0.793359439459 time: 1min 4s
Знакомство с tinder api • Нет оффициального
Знакомство с tinder api • Нет оффициального • Reverse-engineered REST
API
None
Pynder: session = pynder.Session(facebook_id, token) for user in session.nearby_users(): users_queue.enqueue(process_tinder_user,
user)
Примеры [ 6.71781831] [ 7.55022878 ] [ 7.0911563 ] [
9.27091805]
Ссылки, сноски • http://crockpotveggies.com/2015/02/09/automating-tinder-with- eigenfaces.html • http://www.learnopencv.com/facial-landmark-detection/ • http://www.learnopencv.com/computer-vision-for-predicting-facial- attractiveness/
Вопросы? •
[email protected]
• https://github.com/khazidhea/