---
# System prepended metadata

title: 專題：成功大學Dcard板塊的社群互動與心理健康相關性研究

---



# 專題：成功大學Dcard板塊的社群互動與心理健康相關性研究


Dcard是台灣最大的匿名社交平台之一，其中「成功大學」板塊作為該校學生和校友的主要交流平台，提供了豐富的資料來源。這些資料不僅反映了學生的日常生活、學術問題，還涉及到更為複雜的心理健康問題。

#### 研究目的

本研究旨在探討「成功大學」Dcard板塊中的社群互動與心理健康的相關性。透過對大量文章和回應的分析，我們希望能夠：

瞭解成功大學學生在Dcard上的主要關注點和行為模式。
探究社群互動與心理健康狀態之間的相關性。
為學校提供改善學生心理健康的具體建議。

#### 研究方法

- 資料收集：使用Selenium和Pandas進行網頁爬蟲和資料清洗。
- 資料分析：使用自然語言處理（NLP）技術和機器學習模型進行文本分析。
- 結果評估：透過統計分析和質性研究，評估研究假設的有效性。

#### 預期成果

研究將揭示成功大學Dcard板塊中最常見的主題和問題。
提供一個量化的模型，用於評估社群互動與心理健康之間的相關性。
為學校和相關機構提供實用的建議，以改善學生的心理健康狀態。

#### 關鍵詞

Dcard, 成功大學, 社群互動, 心理健康

補充資源：
- [Dcard資料搜集](https://drive.google.com/file/d/1NgbQJ5LMlmcN-WF1G6AZeGsQgs1mkqdh/view?usp=share_link)
- [Selenium使用](https://drive.google.com/file/d/1NNnYzAu3MXF-ldLjeNxWEYrWc6vFZb6v/view?usp=share_link)

## 資料處理流程

在這個部分，我們將詳細解釋資料清洗和處理的流程，並提供相應的程式碼示例。

### 1. 資料收集

首先，我們使用Selenium來爬取「成功大學」Dcard板塊的文章和回應。

```python
from selenium import webdriver

# 初始化webdriver
browser = webdriver.Chrome()

# 訪問Dcard成功大學板塊
browser.get('https://www.dcard.tw/f/ncku')

```
考慮到我們的研究目標和方法，我們可以使用Selenium來模擬瀏覽器操作，進行自動化的文章查詢和篩選。具體來說，我們可以：

進入成功大學的Dcard校板：成功大學校板
使用Selenium的find_element_by_css_selector或find_element_by_xpath方法來定位文章標題、文本、點閱數、愛心數、留言數、留言內容和標籤等。
使用click()方法來模擬點擊操作，如翻頁或進入文章。

```python
from selenium import webdriver

# 啟動瀏覽器並訪問網站
browser = webdriver.Chrome()
browser.get('https://www.dcard.tw/f/ncku')

# 定位元素並操作
article_title = browser.find_element_by_css_selector('.ArticleTitle_selector')
article_title.click()
```

### 2. 資料分類與儲存

蒐集到的資料可以存儲在一個或多個CSV或JSON文件中，以便後續分析。我們可以按照以下方式進行分類和儲存：

標題、文本、點閱數、愛心數、留言數可以存儲在一個主CSV文件中。
留言內容可以存儲在一個獨立的CSV文件中。
標籤可以作為主CSV文件的一個欄位，或存儲在一個獨立的CSV文件中。





### 3. 資料清洗


使用Pandas庫，我們可以進行以下資料清洗步驟：

去除空值：使用dropna()方法去除含有空值的行或列。
去除重複值：使用drop_duplicates()方法去除重複的行。
轉換數據類型：使用astype()方法轉換數據類型，如將點閱數和愛心數轉換為整數。
文本清洗：使用正則表達式或自定義函數去除或替換不需要的字符。

```python
import pandas as pd

df = pd.read_csv('data.csv')

df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
df['views'] = df['views'].astype(int)
df['text'] = df['text'].str.replace('[^a-zA-Z0-9]', ' ')
```

這樣的資料清洗流程可以有效地將原始數據轉換為適合分析的格式。

#### 3.1 NLP資料清洗

在進行自然語言處理（NLP）之前，資料清洗是一個關鍵步驟。這通常包括以下幾個方面：

文本正規化

將文本轉換為一個標準格式。例如，將所有字母轉換為小寫，去除標點符號等。

```py
# 文本正規化
normalized_text = raw_text.lower().replace('.', '').replace(',', '')
```

> 斷詞（Tokenization）:
> 將文本分解為更小的片段或「詞」



####  3.2 Dcard文本分析流程

由於我們的研究對象是Dcard上的「成功大學」板塊，這個板塊有其特殊性，包括主要使用中文、豐富的顏文字和表情符號，以及動態的社交互動指標（如愛心數、留言和點閱率）。以下是一個更詳細的文本分析流程，包括對應的程式碼。

**1. 中文斷詞**

首先，我們使用jieba進行中文斷詞。

```python

import jieba

# 斷詞
seg_list = jieba.cut('你的文本', cut_all=False)
words = ' '.join(seg_list)
```

**2. 顏文字和表情符號**

這些符號在Dcard上非常常見，並且可能對某些分析（如情感分析）有重要意義。

```python
import re

# 去除或保留顏文字和表情符號
emoji_pattern = re.compile('['u'\U0001F600-\U0001F64F'u'\U0001F300-\U0001F5FF'u'\U0001F680-\U0001F6FF'u'\U0001F700-\U0001F77F'u'\U0001F780-\U0001F7FF'u'\U0001F800-\U0001F8FF'u'\U0001F900-\U0001F9FF'u'\U0001FA00-\U0001FA6F'u'\U0001FA70-\U0001FAFF'u'\U00002702-\U000027B0'u'\U00002600-\U000026FF']+')
filtered_text = emoji_pattern.sub(r'', text)
```

**3. 社交互動指標**

愛心數、留言和點閱率是文章受歡迎程度的重要指標。

```python
# 假設這些數據已經被爬取並存儲在DataFrame中
import pandas as pd

df = pd.DataFrame({'title': titles, 'hearts': hearts, 'comments': comments, 'views': views})

```
**4. 情感分析**

使用中文情感分析工具，如SnowNLP。

```python
from snownlp import SnowNLP

# 情感分析
s = SnowNLP(text)
s.sentiments
```

**5. 主題模型**

使用LDA來找出成功大學板塊中最常出現的主題。

```py
from sklearn.decomposition import LatentDirichletAllocation as LDA

# 執行LDA模型
lda = LDA(n_components=5)
lda.fit_transform(X)


from nltk.tokenize import word_tokenize

tokens = word_tokenize(normalized_text)
```

**6. 停用詞去除**

去除常見但對分析沒有太多意義的詞，如 'the', 'is', 'in' 等。

```python
from nltk.corpus import stopwords

stop_words = set(stopwords.words('english'))
filtered_tokens = [w for w in tokens if not w in stop_words]
```

**7. 詞幹提取（Stemming）**

將詞的不同形式還原為其詞幹。例如，'running' -> 'run'。

```python

from nltk.stem import PorterStemmer

ps = PorterStemmer()
stemmed_tokens = [ps.stem(w) for w in filtered_tokens]
```

這些步驟將為後續的NLP分析提供一個乾淨、結構化的資料集。

```python

from sklearn.feature_extraction.text import CountVectorizer

cv = CountVectorizer()
X = cv.fit_transform(df['text'])
```

### 4. 統計分析

進行統計分析以評估研究假設的有效性，以下以t-test作範例：

```python

from scipy import stats

# t-test
stats.ttest_ind(group1, group2)
```

