songyiliao CoinW commited on
Commit
1b3f334
·
verified ·
1 Parent(s): 1244519

feat: update space styles (#2)

Browse files

- feat: update space styles (6b4a796ff0a746e3279f07366a81b09872641249)


Co-authored-by: Coin W <CoinW@users.noreply.huggingface.co>

Files changed (2) hide show
  1. app.py +62 -44
  2. relative_tester.py +5 -1
app.py CHANGED
@@ -8,20 +8,23 @@ from relative_tester import RelativeTester
8
 
9
  def run_test(input_text):
10
  if not input_text:
11
- return "Now that you've built a demo, you'll probably want to share it with others. Gradio demos can be shared in two ways: using a temporary share link or permanent hosting on Spaces."
12
  # return two_sample_tester.test(input_text.strip())
13
  return relative_tester.test(input_text.strip())
14
  return f"Prediction: Human (Mocked for {input_text})"
15
 
16
 
17
  css = """
18
- #header { text-align: center; font-size: 3em; margin-bottom: 20px; color: #black; font-weight: bold;}
19
- #output-text { font-weight: bold; font-size: 1.2em; border-radius: 10px; padding: 10px; background-color: #f4f4f4;}
 
20
  .links {
21
  display: flex;
22
  justify-content: flex-end;
23
- gap: 10px;
24
  margin-right: 10px;
 
 
25
  align-items: center;
26
  font-size: 0.9em;
27
  color: #ADD8E6;
@@ -30,28 +33,18 @@ css = """
30
  margin: 0 5px;
31
  color: #000;
32
  }
33
-
34
  /* Adjusting layout for Input Text and Inference Result */
35
  .input-row {
36
  display: flex;
37
  width: 100%;
38
  }
39
-
40
  .input-text {
41
  flex: 3; /* 4 parts of the row */
42
  margin-right: 1px;
43
  border-radius: 8px;
44
  padding: 12px;
45
- border: 2px soild #d1d1d1;
46
- }
47
-
48
- .output-text {
49
- flex: 1; /* 1 part of the row */
50
- border-radius: 8px;
51
- padding: 12px;
52
- border: 2px soild #d1d1d1;
53
  }
54
-
55
  /* Set button widths to match the Select Model width */
56
  .button {
57
  width: 250px; /* Same as the select box width */
@@ -61,31 +54,24 @@ css = """
61
  font-weight: bold;
62
  border-radius: 8px;
63
  }
64
-
65
  .button:hover {
66
  background-color: #0000FF;
67
  }
68
-
69
  /* Set height for the Select Model dropdown */
70
  .select {
71
  height: 100px; /* Set height to 100px */
72
  }
73
-
74
  /* Accordion Styling */
75
  .accordion {
76
  width: 100%; /* Set the width of the accordion to match the parent */
77
- max-height: 200px; /* Set a max-height for accordion */
78
- overflow-y: auto; /* Allow scrolling if the content exceeds max height */
79
  margin-bottom: 10px; /* Add space below accordion */
80
  box-sizing: border-box; /* Ensure padding is included in width/height */
81
  }
82
-
83
  /* Accordion content max-height */
84
  .accordion-content {
85
- max-height: 200px; /* Limit the height of the content */
86
- overflow-y: auto; /* Add a scrollbar if content overflows */
87
  }
88
-
89
  .demo-banner {
90
  background-color: #f3f4f6;
91
  padding: 20px;
@@ -96,12 +82,35 @@ css = """
96
  margin-bottom: 20px;
97
  color: #ff5722;
98
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  """
100
 
101
  # Gradio App
102
  with gr.Blocks(css=css) as app:
103
  with gr.Row():
104
- gr.HTML('<div id="header">R-detect On HuggingFace</div>')
 
 
105
  with gr.Row():
106
  gr.HTML(
107
  """
@@ -110,14 +119,14 @@ with gr.Blocks(css=css) as app:
110
  <span class="separator">|</span>
111
  <a href="https://github.com/xLearn-AU/R-Detect" target="_blank">Code</a>
112
  <span class="separator">|</span>
113
- <a href="mailto:1730421718@qq.com" target="_blank">Contact</a>
114
  </div>
115
  """
116
  )
117
 
118
  with gr.Row():
119
  gr.HTML(
120
- '<div class="demo-banner">This is a demo. For the full version, please refer to the <a href="https://github.com/xLearn-AU/R-Detect" target="_blank">GitHub</a> or the <a href="https://openreview.net/forum?id=z9j7wctoGV" target="_blank">Paper</a>.</div>'
121
  )
122
 
123
  with gr.Row():
@@ -132,38 +141,47 @@ with gr.Blocks(css=css) as app:
132
  label="Inference Result",
133
  placeholder="Made by Human or AI",
134
  elem_id="output-text",
135
- lines=8,
136
- elem_classes=["output-text"],
137
  )
 
138
  with gr.Row():
139
  submit_button = gr.Button(
140
  "Run Detection", variant="primary", elem_classes=["button"]
141
  )
142
  clear_button = gr.Button("Clear", variant="secondary", elem_classes=["button"])
143
 
144
- submit_button.click(run_test, inputs=[input_text], outputs=output)
145
  clear_button.click(lambda: ("", ""), inputs=[], outputs=[input_text, output])
146
 
147
- with gr.Accordion("Disclaimer", open=False, elem_classes=["accordion"]):
148
  gr.Markdown(
149
  """
150
- - **Disclaimer**: This tool is for demonstration purposes only. It is not a foolproof AI detector.
151
- - **Accuracy**: Results may vary based on input length and quality.
152
- """
153
  )
154
 
155
- with gr.Accordion("Citations", open=False, elem_classes=["accordion"]):
156
  gr.Markdown(
157
  """
158
- ```
159
- @inproceedings{zhangs2024MMDMP,
160
- title={Detecting Machine-Generated Texts by Multi-Population Aware Optimization for Maximum Mean Discrepancy},
161
- author={Zhang, Shuhai and Song, Yiliao and Yang, Jiahao and Li, Yuanqing and Han, Bo and Tan, Mingkui},
162
- booktitle = {International Conference on Learning Representations (ICLR)},
163
- year={2024}
164
- }
165
- ```
166
- """
 
 
 
 
 
 
 
 
167
  )
168
 
169
 
 
8
 
9
  def run_test(input_text):
10
  if not input_text:
11
+ return "Please enter some text to test."
12
  # return two_sample_tester.test(input_text.strip())
13
  return relative_tester.test(input_text.strip())
14
  return f"Prediction: Human (Mocked for {input_text})"
15
 
16
 
17
  css = """
18
+ #header { text-align: center; margin-bottom: 5px; color: #black; font-weight: bold; font-weight: bold;}
19
+ #header_bigger { font-size: 2.5em; }
20
+ #header_smaller { font-size: 2em; }
21
  .links {
22
  display: flex;
23
  justify-content: flex-end;
24
+ gap: 5px;
25
  margin-right: 10px;
26
+ margin-top: -10px;
27
+ margin-bottom: -20px !important;
28
  align-items: center;
29
  font-size: 0.9em;
30
  color: #ADD8E6;
 
33
  margin: 0 5px;
34
  color: #000;
35
  }
 
36
  /* Adjusting layout for Input Text and Inference Result */
37
  .input-row {
38
  display: flex;
39
  width: 100%;
40
  }
 
41
  .input-text {
42
  flex: 3; /* 4 parts of the row */
43
  margin-right: 1px;
44
  border-radius: 8px;
45
  padding: 12px;
46
+ border: 2px solid #d1d1d1;
 
 
 
 
 
 
 
47
  }
 
48
  /* Set button widths to match the Select Model width */
49
  .button {
50
  width: 250px; /* Same as the select box width */
 
54
  font-weight: bold;
55
  border-radius: 8px;
56
  }
 
57
  .button:hover {
58
  background-color: #0000FF;
59
  }
 
60
  /* Set height for the Select Model dropdown */
61
  .select {
62
  height: 100px; /* Set height to 100px */
63
  }
 
64
  /* Accordion Styling */
65
  .accordion {
66
  width: 100%; /* Set the width of the accordion to match the parent */
67
+ max-height: auto; /* Set a auto-height for accordion */
 
68
  margin-bottom: 10px; /* Add space below accordion */
69
  box-sizing: border-box; /* Ensure padding is included in width/height */
70
  }
 
71
  /* Accordion content max-height */
72
  .accordion-content {
73
+ max-height: auto; /* auto the height of the content */
 
74
  }
 
75
  .demo-banner {
76
  background-color: #f3f4f6;
77
  padding: 20px;
 
82
  margin-bottom: 20px;
83
  color: #ff5722;
84
  }
85
+ /* Green for Human text */
86
+ .highlighted-human {
87
+ background-color: #d4edda;
88
+ color: #155724;
89
+ border: 2px solid #28a745;
90
+ }
91
+ /* Red for AI text */
92
+ .highlighted-ai {
93
+ background-color: #f8d7da;
94
+ color: #721c24;
95
+ border: 2px solid #dc3545;
96
+ }
97
+ /* Yellow for errors */
98
+ .highlighted-error {
99
+ background-color: #fff3cd;
100
+ color: #856404;
101
+ border: 2px solid #ffc107;
102
+ }
103
+ #output-text textarea {
104
+ font-family: 'Impact', sans-serif;
105
+ }
106
  """
107
 
108
  # Gradio App
109
  with gr.Blocks(css=css) as app:
110
  with gr.Row():
111
+ gr.HTML(
112
+ '<div id="header"><span id="header_bigger">R-Detect: </span><span id="header_smaller">Human-Rewritten or AI-Generated</span></div>'
113
+ )
114
  with gr.Row():
115
  gr.HTML(
116
  """
 
119
  <span class="separator">|</span>
120
  <a href="https://github.com/xLearn-AU/R-Detect" target="_blank">Code</a>
121
  <span class="separator">|</span>
122
+ <a href="mailto:yiliao.song@gmail.com" target="_blank">Contact</a>
123
  </div>
124
  """
125
  )
126
 
127
  with gr.Row():
128
  gr.HTML(
129
+ '<div class="demo-banner">This is a demo running on CPU only. For the full version, please refer to the <a href="https://github.com/xLearn-AU/R-Detect" target="_blank">GitHub</a> or the <a href="https://openreview.net/forum?id=z9j7wctoGV" target="_blank">Paper</a>.</div>'
130
  )
131
 
132
  with gr.Row():
 
141
  label="Inference Result",
142
  placeholder="Made by Human or AI",
143
  elem_id="output-text",
144
+ lines=2, # Keep it compact
145
+ interactive=False, # Make it read-only
146
  )
147
+
148
  with gr.Row():
149
  submit_button = gr.Button(
150
  "Run Detection", variant="primary", elem_classes=["button"]
151
  )
152
  clear_button = gr.Button("Clear", variant="secondary", elem_classes=["button"])
153
 
154
+ submit_button.click(run_test, inputs=[input_text], outputs=[output])
155
  clear_button.click(lambda: ("", ""), inputs=[], outputs=[input_text, output])
156
 
157
+ with gr.Accordion("Disclaimer", open=True, elem_classes=["accordion"]):
158
  gr.Markdown(
159
  """
160
+ - **Disclaimer**: This tool is for demonstration purposes only. It is not a foolproof AI detector.
161
+ - **Accuracy**: Results may vary based on input length and quality.
162
+ """
163
  )
164
 
165
+ with gr.Accordion("Cite Our Work", open=True, elem_classes=["accordion"]):
166
  gr.Markdown(
167
  """
168
+ ```
169
+ @inproceedings{song2025deep,
170
+ title = {Deep Kernel Relative Test for Machine-generated Text Detection},
171
+ author = {Yiliao Song and Zhenqiao Yuan and Shuhai Zhang and Zhen Fang and Jun Yu and Feng Liu},
172
+ booktitle = {The Twelfth International Conference on Learning Representations},
173
+ year = {2025},
174
+ url = {https://openreview.net/pdf?id=z9j7wctoGV}
175
+ }
176
+ ```
177
+ """
178
+ )
179
+
180
+ with gr.Accordion("Acknowledgement", open=True, elem_classes=["accordion"]):
181
+ gr.Markdown(
182
+ """
183
+ We Thanks Jinqian Wang and Jerry Ye for their help in the development of this space.,
184
+ """
185
  )
186
 
187
 
relative_tester.py CHANGED
@@ -73,4 +73,8 @@ class RelativeTester:
73
  print("DEBUG: power:", power)
74
  print("DEBUG: power list:", h_u_list)
75
  # Return the result
76
- return "Human" if power <= threshold else "AI"
 
 
 
 
 
73
  print("DEBUG: power:", power)
74
  print("DEBUG: power list:", h_u_list)
75
  # Return the result
76
+ return (
77
+ "Most likely Human Write"
78
+ if power <= threshold
79
+ else "Most likely Machine Generated"
80
+ )