---
# System prepended metadata

title: AIOT/AI project 筆記

---

# AIOT/AI project 筆記

## 原理

藉由分析網路社群的討希望找出好看的小說

這邊的討論資料是取自PTT CF版

>link: https://www.ptt.cc/bbs/CFantasy/index.html
## 架構

預計架構
>爬蟲(全部資料)->NER->書名->評論->正負面分析&關鍵字
>
實際架構

>爬蟲(全部資料)-> ~~NER~~-> 書名->評論->正負面分析&關鍵字
>NER找不出書名，改用人工找

也許是小說名字特性的緣故，NER常常會視為多個詞彙
## 爬蟲

使用python request 與 beautifulsoup 套件

```python=
url='https://www.ptt.cc/bbs/CFantasy/search?page=%d&q=%s'%(i,q)
res=rs.get(url,verify=False)
soup=BeautifulSoup(res.text,features="html.parser")
```
>程式碼選錄

而後將文章存成json以便後續使用

```python=
for idx,url in enumerate(urls):
            with open('./post_data_byname/%s/%d.json'%(target,idx),'w') as f:        
                f.write(json.dumps(get_a_post(url)))
```
>程式碼選錄
## 分析
### 正負面分析
使用bert 後面接上分類器 
0=負面
1=正面


>->[bert介紹](https://leemeng.tw/attack_on_bert_transfer_learning_in_nlp.html)

這邊模型是感謝同學大大的提供
```python=
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
config = BertConfig.from_pretrained('trained_model/config.json')
model = BertForSequenceClassification.from_pretrained('trained_model/pytorch_model.bin',config=config)
```
>載入模型
```python=
.
.#一些格式化輸入的部分
.  
input_ids = torch.LongTensor(input_id).unsqueeze(0)
outputs = model(input_ids)
.
.#一些格式化輸出的部分
.
```
>程式碼選錄

### 關鍵字
使用 jieba.analyse

```python=
import jieba.analyse
ks = jieba.analyse.extract_tags(string, topK=4)
```

原理為TF/IDF
也就是說，當文章中有特有的文字，就容易成為關鍵字


## 網頁
### location
http://104.43.19.221:8088

Azure 主機
價格考量，沒有買網域

### 前端

對伺服器發送請求


```python=
column=request.args.get('column')
order=request.args.get('order')
```
>接受請求
### 後端
Flask

跟據請求來跟資料庫query
```python=
c.execute("SELECT * FROM novel ORDER BY "+column+" "+order)
```
### 資料庫
mysql
```python=
insert=r'''
INSERT INTO novel (name, ccount, pcount, ncount, rate, keyword) VALUES ("%s","%s","%s","%s","%s",'%s');
'''
cursor.execute(insert%(bn,json_data['ccount'],json_data['pcount'],json_data['ncount'],json_data['rate'],kw))
```
## 結論
