Python을 사용하여 견적 생성기 웹 사이트를 만든 방법
4378 단어 architecturepythonawstutorial
유레카!
내 Instagram 피드를 서핑하는 동안 내 머리에 임의의 생각이 떠올랐다. 그림과 분위기를 분석하여 나에게 임의의 인용구를 주는 도구를 만드는 것은 어떻습니까? 이 생각을 지울 수 없어서 뭔가 흥미로운 것을 만들 준비를 했습니다.
이 게시물에서는 https://quotes-maker.com/ 웹 사이트 구축의 각 단계에서 경험을 공유했으며 여기에 code이 있습니다.
데이터세트 검색
먼저 따옴표/캡션에 대한 큰 데이터 세트를 원했습니다. kaggle.com과 같은 웹사이트는 이러한 데이터 세트에 가장 적합합니다. https://www.kaggle.com/manann/quotes-500k에서 500,000개의 견적이 있는 데이터 세트를 찾았습니다.
데이터 세트 정리
이 데이터 세트에는 3개의 열이 있습니다.
quote, author, category
“you were chasing stones forever forgetting about diamonds”, Skye Elf, [life, inspirational]
나는 그것에 더 많은 것이 필요했는데, 당신이 웹사이트에서 보셨을 것입니다. 견적은 이미지의 개체와 사용자가 선택한 분위기를 기반으로 생성됩니다.
개체: 복잡한 문장에서 개체를 쉽게 추출할 수 있게 해주는 spacy의 NLP를 사용했습니다. 그것은 다음과 같이 간다 -
import spacy
nlp = spacy.load("en_core_web_sm")
OBJECTS = {"dobj", "dative", "attr", "oprd"}
doc = nlp("Have enough courage to trust love one more time and always one more time.")
objects = [tok for tok in doc if (tok.dep_ in OBJECTS)]
print(objects)
>>> [courage, love]
기분: 기존 데이터 세트에는 잘 정의된 범주 열이 있습니다(위의 예에서 "인생, 영감"). 그냥 문장의 분위기를 파악하기 위해 나누었습니다.
이 데이터를 어디에 두어야 합니까?
MongoDB를 사용하여 데이터 세트를 데이터베이스로 호스팅했습니다. 저는 512MB의 무료 스토리지가 있는 MongoDBFree cluster를 사용했는데 이는 나에게 충분했습니다.
Mongo에 배포하는 것은 매우 쉽습니다. CSV를 JSON으로 변환하고 Mongo에 삽입합니다.
# Import json to db
with open("quotes.json") as f:
file_data = json.load(f)
# Insert in DB
import pymongo
client = pymongo.MongoClient("mongodb+srv://db-name:[email protected]/db-name")
db = client.collection_name
db.collection_name.insert_many(file_data)
AI 매직
Python에서 이미지 분석을 수행하기 위해 AI 전문가이거나 복잡한 알고리즘을 알 필요는 없으며 기존 AI API를 사용하는 방법만 알면 됩니다. Amazon Rekognition을 사용하여 이미지를 분석했습니다. 이것은 이미지에 존재하는 객체/라벨을 제공합니다.
import boto3
boto3.client("rekognition").detect_labels(Image={"Bytes": encoded_image_string})
모두 함께 넣어!
플라스크
거기 밖으로 많은 웹사이트 생성기가 있습니다. 이 사이트에는 AppSeeds와 Creative Tim의 테마를 사용했습니다. here 에서 youngsoul
에 의해 수행되는 약간의 개선이 필요했습니다.
Flask의 청사진은 프로젝트에서 권한 부여자, DB 서비스, 기본 페이지와 같은 사이트의 각 부분에 대한 구성 요소를 만드는 데 사용됩니다.
위의 플라스크 템플릿에 내 논리를 추가했고 우리는 갈 준비가 되었습니다http://quotes-maker.com :)
호스팅 및 배포
지금까지 사용된 모든 리소스는 무료이며 새 도메인 이름을 구입하는 것을 제외하고 나머지도 무료입니다.
HerokuFree and Hobby pack는 저와 같은 소규모 애플리케이션을 처리하기에 충분합니다. 배포의 경우 Travis와 Heroku의 통합이 가장 중요합니다. .travis.yml 파일에 아래 코드를 추가하기만 하면 각 커밋에서 응용 프로그램이 자동으로 Heroku에 배포됩니다.
.travis.yml
deploy:
provider: heroku
api_key: ...
app:
stage: my-app-staging
master: my-app-production
도메인 및 CDN
사이트가 Heroku에 배포되면 사이트 앞에 도메인을 추가해야 합니다. GoDaddy에서 도메인을 구입하여 Cloudflare에 추가했습니다.
Cloudflare은 웹 서버와 나머지 인터넷 사이에 있는 데이터 센터 네트워크입니다. 무료 SSL, 트래픽 통찰력을 제공하고 여러 공격으로부터 사이트를 보호하는 훌륭한 도구입니다. 사이트가 Cloudflare에 추가되면 NameServer를 변경하고 DNS를 추가해야 합니다.
자신만의 사이트를 만들어 인터넷에서 호스팅할 수도 있습니다. 나는 이상하고 미친 아이디어 중 하나를 세상에 알리기 위해 따랐던 단계를 공유하려고 노력했습니다. 도움이 되었으면 합니다.
Reference
이 문제에 관하여(Python을 사용하여 견적 생성기 웹 사이트를 만든 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yogingale/how-i-created-quotes-generator-website-using-python-4ln9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
quote, author, category
“you were chasing stones forever forgetting about diamonds”, Skye Elf, [life, inspirational]
import spacy
nlp = spacy.load("en_core_web_sm")
OBJECTS = {"dobj", "dative", "attr", "oprd"}
doc = nlp("Have enough courage to trust love one more time and always one more time.")
objects = [tok for tok in doc if (tok.dep_ in OBJECTS)]
print(objects)
>>> [courage, love]
# Import json to db
with open("quotes.json") as f:
file_data = json.load(f)
# Insert in DB
import pymongo
client = pymongo.MongoClient("mongodb+srv://db-name:[email protected]/db-name")
db = client.collection_name
db.collection_name.insert_many(file_data)
import boto3
boto3.client("rekognition").detect_labels(Image={"Bytes": encoded_image_string})
.travis.yml
deploy:
provider: heroku
api_key: ...
app:
stage: my-app-staging
master: my-app-production
Reference
이 문제에 관하여(Python을 사용하여 견적 생성기 웹 사이트를 만든 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yogingale/how-i-created-quotes-generator-website-using-python-4ln9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)