Skip to content

Commit

Permalink
Merge pull request #78 from 21WelfareForEveryone/main
Browse files Browse the repository at this point in the history
Merge main to release
  • Loading branch information
hyehyeonmoon authored Oct 15, 2022
2 parents ff54bb0 + 70193ad commit 5baf360
Show file tree
Hide file tree
Showing 32 changed files with 565 additions and 706 deletions.
148 changes: 83 additions & 65 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

![](https://i.imgur.com/LkDevQK.png)

복지 사각지대에 계신 분들이 앱 하나로 자신에게 **최적화된 복지 혜택**을 받아 볼 수 있습니다.
**최적의 맞춤형 정보제공 챗봇과 실시간 푸시 알림, 주변 복지시설 안내, 관심복지 저장**의 기능을 통해 **복지 사각지대**의 사람들에게 편의를 제공합니다.
([2021 프로보노 공모전](https://www.hanium.or.kr/portal/subscription/info.do?trackSeq=2) **대상 과학기술정보통신부장관상** 수상작입니다.)
- 복지 사각지대에 계신 분들이 앱 하나로 자신에게 **최적화된 복지 혜택**을 받아 볼 수 있습니다.
- **최적의 맞춤형 정보제공 챗봇과 실시간 푸시 알림, 주변 복지시설 안내, 관심복지 저장**의 기능을 통해 **복지 사각지대**의 사람들에게 편의를 제공합니다.
- [2021 프로보노 공모전](https://www.hanium.or.kr/portal/subscription/info.do?trackSeq=2) 대상 과학기술정보통신부장관상 수상작입니다.
- 구글 플레이 스토어에 정식으로 다운로드 받으실 수 있습니다.([다운로드 링크](https://play.google.com/store/apps/details?id=com.product.welfareapp), 버전 : 1.0.2, 업데이트 날짜 : 22.08.29)

## 기술 스택

Expand All @@ -20,97 +21,114 @@
- KoSBERT에 대해 알고 싶다면? : [KoSBERT](https://www.notion.so/welfareforeveryone/KoSBERT-15ecbf962da646d0a88909700f8bebd8)

## 실행 스크립트

---
### 앱 실행 스크립트
- Android Studio Emulator 환경에서 동작시키기(Android Studio 필요)
```java
cd ./client/
1. Download Android Emulator
2. Build -> Make Project
3. Run -> Run 'app'
```

```java
Execute Android Eumulator
Build Project
Run
```

### 서버 실행 스크립트
- Android Studio에서 .aab 혹은 .apk 파일 생성하기
```java
1. Build -> Build Bundle(s) / APK(s)
2. Download welfare.aab / welfare.apk from local
```

server/.env를 참고해서 환경변수 파일을 만들어주세요.
server/config/ 폴더에 chatbot.json파일을 [여기서](https://www.notion.so/welfareforeveryone/391ccf431eaa449db00c9a36658ee6e8) 다운받아서 넣어주세요.
server/config/ 폴더에 firebase 인증 키 정보를 넣어주고 추가해주세요.
- 디바이스 환경(모바일) : 구글 플레이 스토어에서 [다운로드](https://play.google.com/store/apps/details?id=com.product.welfareapp) 후 사용 가능

```NodeJs
cd (backend folder)
npm install
npm run prod (production version)
npm start (development version)
```
<br/>

---
### 서버 실행 스크립트
- 서버 실행 순서
1. server/.env를 참고해서 환경변수 파일을 만들어주세요.
2. server/config/ 폴더에 chatbot.json파일을 [여기서](https://www.notion.so/welfareforeveryone/391ccf431eaa449db00c9a36658ee6e8) 다운받아서 넣어주세요.
3. server/config/ 폴더에 firebase 인증 키 정보를 넣어주고 추가해주세요.
<br/>

```NodeJs
cd (backend folder)
npm install
npm run prod (production version)
npm start (development version)
```
<br/>

---
### AI 일상대화 챗봇 실행 스크립트(KcELECTRA)

> docker image 다운로드: kmg2933/welfare-for-everyone:0921

- 파일
model.pt 파일은 해당 [링크](https://welfareforeveryone.notion.site/391ccf431eaa449db00c9a36658ee6e8)에서 받아가세요.

model.pt 파일은 해당 [링크](https://welfareforeveryone.notion.site/391ccf431eaa449db00c9a36658ee6e8)에서 받아가세요.

```python
config = {
'port':'number'
}
```
```python
config = {
'port':'number'
}
```

- 실행 스크립트

```script
sudo cp model.pt WelfareForEveryOne/ai/KcELECTRAchatbot/flask/model.pt
sudo cp config.py WelfareForEveryOne/ai/KcELECTRAchatbot/flask/config.py
cd WelfareForEveryOne/ai/KcELECTRAchatbot/flask
// image build
docker build --no-cache -t kmg2933/welfare-for-everyone:prod .
// cpu
docker run --rm -it -p [host port]:[container port] kmg2933/welfare-for-everyone:prod
```

```script
sudo cp model.pt WelfareForEveryOne/ai/KcELECTRAchatbot/flask/model.pt
sudo cp config.py WelfareForEveryOne/ai/KcELECTRAchatbot/flask/config.py

cd WelfareForEveryOne/ai/KcELECTRAchatbot/flask

// image build
docker build --no-cache -t kmg2933/welfare-for-everyone:prod .

// cpu
docker run --rm -it -p [host port]:[container port] kmg2933/welfare-for-everyone:prod

```
<br/>

---
### AI 복지정보 챗봇 실행 스크립트(KoSBERT)

> docker image 다운로드:bookbug/kosbert_image:latest
>docker image 다운로드:bookbug/kosbert_image:latest
(참고 : CPU로 실행되도록 설정되어 있습니다. GPU로 실행하고 싶으시다면 [GPU 실행](https://github.com/BM-K/KoSentenceBERT-SKT/issues/8)을 참고해주세요.)

- 파일
result.pt 파일은 해당 [링크](https://drive.google.com/drive/folders/1fLYRi7W6J3rxt-KdGALBXMUS2W4Re7II)의 sts/result.pt 파일을 다운받으세요.
corpus_embedding.csv는 해당 [링크](https://www.notion.so/welfareforeveryone/391ccf431eaa449db00c9a36658ee6e8)에서 다운받으세요. [출처](https://www.data.go.kr/data/15090532/openapi.do)는 공공데이터포털입니다.
* result.pt 파일은 해당 [링크](https://drive.google.com/drive/folders/1fLYRi7W6J3rxt-KdGALBXMUS2W4Re7II)의 sts/result.pt 파일을 다운받으세요.
* corpus_embedding.csv는 해당 [링크](https://www.notion.so/welfareforeveryone/391ccf431eaa449db00c9a36658ee6e8)에서 다운받으세요. [출처](https://www.data.go.kr/data/15090532/openapi.do)는 공공데이터포털입니다.

```python
config = {
'port':'number'
}
```
```python
config = {
'port':'number'
}
```

- 실행 스크립트
```script
// file copy
sudo cp result.pt WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/output/training_sts/0_Transformer/result.pt
sudo cp corpus_embedding.csv WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/corpus_embedding.csv
sudo cp config.py WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/config.py

```script
// file copy
sudo cp result.pt WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/output/training_sts/0_Transformer/result.pt
sudo cp corpus_embedding.csv WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/corpus_embedding.csv
sudo cp config.py WelfareForEveryOne/ai/KoSentenceBERTchatbot/KoSentenceBERT/config.py
cd WelfareForEveryOne/ai/KoSentenceBERTchatbot

cd WelfareForEveryOne/ai/KoSentenceBERTchatbot
// image build
docker build --no-cache -t kosbert_image:prod .

// image build
docker build --no-cache -t kosbert_image:prod .
// cpu
docker run --rm -it -p [host port]:[container port] kosbert_image:prod

// cpu
docker run --rm -it -p [host port]:[container port] kosbert_image:prod
// gpu
docker run --gpus all --rm -it -p [host port]:[container port] kosbert_image:prod

// gpu
docker run --gpus all --rm -it -p [host port]:[container port] kosbert_image:prod
```

```

## 어플리케이션 시연
---

전체 시연 영상은 다음 [데모 영상](https://www.youtube.com/watch?v=YdwjrgnP7SM)을 참고해 주세요.
데모 및 설명은 다음 [데모 영상](https://www.youtube.com/watch?v=YdwjrgnP7SM)을 참고해 주세요.
실제 어플리케이션 시연 영상은 다음 [시연 영상](https://www.youtube.com/watch?v=MDyH8tj1s0g)을 참고해 주세요.
~~실제 어플리케이션은 [다운로드 링크](https://play.google.com/store/apps/details?id=com.product.welfareapp)를 통해 다운 후 사용해보실 수 있습니다.~~ (현재 서비스 중지)

|추천 복지 열람|챗봇|복지시설 |푸시알림|관심복지 추가|
|:---:|:---:|:---:|:---:|:---:|
Expand Down
1 change: 0 additions & 1 deletion WelfareForEveryOne
Submodule WelfareForEveryOne deleted from eddbd2
1 change: 1 addition & 0 deletions ai/KoSentenceBERTchatbot/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ WORKDIR /workspace/KoSentenceBERT

COPY KoSentenceBERT/main.py .
COPY KoSentenceBERT/utils.py .
COPY KoSentenceBERT/config.py .
COPY KoSentenceBERT/wsgi.py .
COPY KoSentenceBERT/corpus_embedding.csv .
# COPY KoSentenceBERT/device/serialization.py /torch/ #GPU
Expand Down
6 changes: 4 additions & 2 deletions ai/KoSentenceBERTchatbot/KoSentenceBERT/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import pandas as pd
import json

from utils import extract_top
from utils import extract_top, extract_welfare_id

from flask import Flask, request

Expand Down Expand Up @@ -33,9 +33,11 @@ def method():

standard = params['standard']
em_se_embedding = corpus_embedding['embedding_'+standard]
corpus_welfare_id = corpus_embedding['welfare_id']

top_k=3
top_results = extract_top(em_se_embedding, query_embedding, top_k)
top_welfare_id = extract_welfare_id(corpus_welfare_id, top_results)

return json.dumps({"recommend":top_results},ensure_ascii=False)
return json.dumps({"recommend":top_welfare_id},ensure_ascii=False)

8 changes: 6 additions & 2 deletions ai/KoSentenceBERTchatbot/KoSentenceBERT/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
import json

def cos_sim(A, B):
return dot(A, B)/(norm(A)*norm(B)) ## A, B는 array
return dot(A, B)/(norm(A)*norm(B)) ## A, B는 array

def extract_top(em_se_embedding, em_query, top_k):
cos_sim_query = pd.DataFrame()
for i in range(em_se_embedding.size):
cos_sim_query.loc[i, 'cos_sim'] = cos_sim(np.array(json.loads(em_se_embedding[i])), em_query)
cos_sim_query = cos_sim_query.sort_values("cos_sim", ascending=False)
top_sm = cos_sim_query.index[0:top_k].tolist()
return top_sm
return top_sm

def extract_welfare_id(corpus_welfare_id, top_results):
top_welfare_id = corpus_welfare_id[top_results].tolist()
return top_welfare_id
17 changes: 17 additions & 0 deletions client/.idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions client/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 17 additions & 9 deletions client/README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
# 모두의 복지
프로보노 공모전 프론트엔드 개발 프로젝트 by TAVE<br/>
- Email address :
개인 맞춤형 복지 추천 앱 모두의 복지 프론트엔드 개발 소개 페이지입니다. <br/>
- Developer email address :
- App Developer(김진수) : [email protected]<br/>
- App Developer(박해미) :
- App Developer(박해미) :
- Demo Video : https://www.youtube.com/watch?v=YdwjrgnP7SM <br />
- 기술 스택 정리 : https://welfareforeveryone.notion.site/Front-end-Framework-and-Structure-2e8b6b629ea844fd87a32a198ee49fff <br/>
- 기술 스택 정리(notion) : https://welfareforeveryone.notion.site/Front-end-Framework-and-Structure-2e8b6b629ea844fd87a32a198ee49fff <br/>

## Introduction

모두의 복지는 복지 사각지대에 계신 분들에게 사용자 기반 추천 알고리즘을 적용한 최적화된 복지 혜택을 실시간 제공해주는 어플리케이션입니다.
모두의 복지는 복지 사각지대에 계신 분들에게 사용자 기반 추천 알고리즘을 적용한 최적화된 복지 혜택을 실시간 제공해주는 어플리케이션입니다. <br/>
기본적으로 복지 정보 열람 서비스를 제공하고 있으며 (1) 카테고리별 복지 정보 (2) 키워드 기반 추천 복지 정보 (3) 사용자 관심 복지 정보 (4) 대화형 UI 챗봇을 통한 추천 복지의 형태로 실시간 복지 정보를 제공합니다. <br/>
복지 정보 외에도 복지 시설에 대한 위치 제공 서비스와, 챗봇 UI를 활용한 대화 서비스 또한 제공하며, 더 나아가 푸시 알람 기능을 활용해 사용자가 관심을 가질만한 복지 정보에 대한 마감일 알림 서비스 또한 제공하고 있습니다.

모두의 복지가 갖는 기능은 다음과 같습니다.
## UI Implementation
현재까지 프론트엔드에서 구현된 기능은 다음과 같습니다.

1. 리스트 뷰 형태로 최적의 맞춤형 복지 정보 제공
2. 챗봇을 통한 실시간 복지 추천 정보 제공
3. 사용자 위치에 따른 복지시설 안내(병원, 공공기관, 노인 복지 등)
2. 챗봇을 통한 실시간 추천 복지 정보 제공
3. 챗봇을 통한 실시간 대화 서비스 기능
4. 사용자 위치에 따른 복지시설 안내(병원, 공공기관, 노인 복지 등)
4. 복지 정보에 대한 푸시 알림
5. 관심 복지 정보에 대한 찜 기능

## Development Environment
- Tool : Android Studio(ver 2020.03.01 patch2)
- Language : Java
- Library to use
- http networking : volley
- http networking : Volley
- Push Notification : Firebase
- Map UI & Place Searching : Google Map API, Google Place API

## APIs
- Google Map API : MapActivity google map 시각화
Expand All @@ -40,4 +45,7 @@ build project
run app
```

## Download Application
- 구글 플레이스토어 링크 : https://play.google.com/store/apps/details?id=com.product.welfareapp

* 본 프로젝트는 Google의 GCP Credit 지원을 받고 있습니다. (Google supported this work by providing Google Cloud credit)
Loading

0 comments on commit 5baf360

Please sign in to comment.