File size: 5,314 Bytes
ee9bf09
 
af93e9c
ee9bf09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27be02e
 
 
6bfe21c
 
 
663f3c6
b1d9b67
36b6eb2
cb006f6
f2f0b71
 
 
 
 
27be02e
6a4a11f
 
 
 
 
 
 
 
 
 
 
27be02e
6a4a11f
 
27be02e
6a4a11f
 
27be02e
6a4a11f
 
27be02e
f48e248
6bfe21c
 
 
663f3c6
6bfe21c
f48e248
6bfe21c
 
 
 
 
55ede23
6bfe21c
 
f48e248
af93e9c
f48e248
ee517d3
6bfe21c
 
5e35deb
6bfe21c
 
 
 
 
 
 
f48e248
 
 
 
 
 
 
6bfe21c
1d788a2
f48e248
84a10ca
 
af93e9c
f48e248
55ede23
f48e248
 
 
 
 
 
 
 
6bfe21c
 
af93e9c
f48e248
a71293c
55ede23
704fea1
a71293c
6bfe21c
f48e248
 
 
704fea1
 
 
 
 
 
 
 
f48e248
704fea1
 
 
 
 
 
 
 
6bfe21c
 
 
 
1d788a2
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
---
license: mit
license_link: https://mit-license.org/
datasets:
- abullard1/steam-reviews-constructiveness-binary-label-annotations-1.5k
language:
- en
base_model: albert/albert-base-v2
pipeline_tag: text-classification
library_name: transformers
tags:
- steam-reviews
- BERT
- albert-base-v2
- text-classification
- sentiment-analysis
- constructiveness
- gaming
- sentiment-analysis
- text-classification
- fine-tuned
developers: 
- Samuel Ruairí Bullard
- Marco Schreiner
thumbnail: https://i.ibb.co/Ky0wcYy/abullard1-steam-review-constructiveness-classifier-logo-modified-1.png
spaces: abullard1/steam-review-constructiveness-classifier
inference: true
inference_endpoint: https://qautc3jglsumwam2.eu-west-1.aws.endpoints.huggingface.cloud
widget:
- text: "Review: I think this is a great game but it still has some room for improvement., Playtime: 12, Voted Up: True, Upvotes: 1, Votes Funny: 0"
  example_title: "Constructive Review"
- text: "Review: Trash game. Deleted., Playtime: 1, Voted Up: False, Upvotes: 0, Votes Funny: 0"
  example_title: "Non-Constructive Review"

model-index:
  - name: albert-v2-steam-review-constructiveness-classifier
    results:
      - task:
          type: text-classification
        dataset:
          name: abullard1/steam-reviews-constructiveness-binary-label-annotations-1.5k
          type: abullard1/steam-reviews-constructiveness-binary-label-annotations-1.5k
        metrics:
          - name: Accuracy
            type: accuracy
            value: 0.796
          - name: Precision
            type: precision
            value: 0.800
          - name: Recall
            type: recall
            value: 0.818
          - name: F1-score
            type: f1
            value: 0.794
---
<br>
<br>
<div style="text-align: center;">
    <img src="https://i.ibb.co/Ky0wcYy/abullard1-steam-review-constructiveness-classifier-logo-modified-1.png" style="max-width: 30%; display: block; margin: 0 auto;">
</div>

<br>
<br>
<br>

<div style="text-align: center;">
    <b></b><h1>Fine-tuned ALBERT Model for Constructiveness Detection in Steam Reviews</h1></b>
</div>
<hr>

## <u>Model Summary</u>

This model is a fine-tuned version of **albert-base-v2**, designed to classify whether Steam game reviews are constructive or non-constructive. It was trained on the *[steam-reviews-constructiveness-binary-label-annotations-1.5k](https://huggingface.co/datasets/abullard1/steam-reviews-constructiveness-binary-label-annotations-1.5k)* dataset, containing user-generated game reviews labeled as either:
- **1 (constructive)**
- **0 (non-constructive)**

The dataset features were combined into a single string per review, formatted as follows:
<br>
<br>
"Review: **{review}**, Playtime: **{author_playtime_at_review}**, Voted Up: **{voted_up}**, Upvotes: **{votes_up}**, Votes Funny: **{votes_funny}**" and then fed to the model accompanied by the respective ***constructive*** labels. 
<br>
<br>
This approach of concatenating the features into a simple String offers a good trade-off between complexity and performance, compared to other options.

### Intended Use

The model can be applied in any scenario where it's important to distinguish between helpful and unhelpful textual feedback, particularly in the context of gaming communities or online reviews. Potential use cases are platforms like **Steam**, **Discord**, or any community-driven feedback systems where understanding the quality of feedback is critical.

### Limitations

- **Domain Specificity**: The model was trained on Steam reviews and may not generalize well outside gaming.
- **Dataset Imbalance**: The training data has an approximate **63.04%-36.96%** split between non-constructive and constructive reviews.

<hr>

## <u>Evaluation Results</u>

The model was trained and evaluated using an **80/10/10 Train/Dev/Test** split, achieving the following performance metrics during evaluation using the test set:

- **Accuracy**: 0.80
- **Precision**: 0.80
- **Recall**: 0.82
- **F1-score**: 0.79

These results indicate that the model performs reasonably well at identifying the correct label. (~80%)

<hr>

## <u>How to Use</u>

### Huggingface Space
Explore and test the model interactively on its *[Hugging Face Space](https://huggingface.co/spaces/abullard1/steam-review-constructiveness-classifier)*.

### Transformers Library
To use the model programmatically, use this Python snippet:

```python
from transformers import pipeline
import torch

device = 0 if torch.cuda.is_available() else -1
torch_d_type = torch.float16 if torch.cuda.is_available() else torch.float32

base_model_name = "albert-base-v2"

finetuned_model_name = "abullard1/albert-v2-steam-review-constructiveness-classifier"

classifier = pipeline(
    task="text-classification",
    model=finetuned_model_name,
    tokenizer=base_model_name,
    device=device,
    top_k=None,
    truncation=True,
    max_length=512,
    torch_dtype=torch_d_type)

review = "Review: I think this is a great game but it still has some room for improvement., Playtime: 12, Voted Up: True, Upvotes: 1, Votes Funny: 0"
result = classifier(review)
print(result)
```

## License

This model is licensed under the *[MIT License](https://mit-license.org/)*, allowing open and flexible use of the model for both academic and commercial purposes.