1-800-BAD-CODE
commited on
Commit
·
b21595d
1
Parent(s):
5bda556
Update README.md
Browse files
README.md
CHANGED
@@ -80,130 +80,105 @@ For each input subword `t`, this model predicts the probability that `t` is the
|
|
80 |
|
81 |
# Example Usage
|
82 |
|
83 |
-
|
84 |
|
85 |
-
|
|
|
|
|
|
|
|
|
86 |
|
87 |
-
|
88 |
|
89 |
```python
|
90 |
-
from sentencepiece import SentencePieceProcessor
|
91 |
-
import onnxruntime as ort
|
92 |
-
import numpy as np
|
93 |
-
from huggingface_hub import hf_hub_download
|
94 |
from typing import List
|
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 |
-
# Break tokens at boundaries, convert back to text
|
128 |
-
print(f"Input: {text}")
|
129 |
-
for i, break_point in enumerate(break_points):
|
130 |
-
start = 0 if i == 0 else (break_points[i - 1] + 1)
|
131 |
-
sub_ids = ids[start : break_point + 1]
|
132 |
-
sub_text = tokenizer.DecodeIds(sub_ids)
|
133 |
-
print(f"\tSentence {i}: {sub_text}")
|
134 |
```
|
135 |
|
136 |
-
|
137 |
-
|
138 |
-
Some interesting behavior is the English acronyms (a period is not a sufficient condition for a sentence boundary) and Thai (spaces are full stops in Thai, and this is detected automatically).
|
139 |
|
140 |
-
|
141 |
|
142 |
-
|
143 |
-
# English with a lot of acronyms
|
144 |
-
run_infer(
|
145 |
-
"the new d.n.a. sample has been multiplexed, and the gametes are already dividing. let's get the c.p.d. over "
|
146 |
-
"there. dinner's at 630 p.m. see that piece on you in the l.a. times? chicago p.d. will eat him alive."
|
147 |
-
)
|
148 |
-
|
149 |
-
# Chinese
|
150 |
-
run_infer("魔鬼兵團都死了?但是如果这让你不快乐就别做了。您就不能发个电报吗。我們都準備好了。")
|
151 |
-
|
152 |
-
# Spanish
|
153 |
-
run_infer("él es uno de aquellos. ¿tiene algo de beber? cómo el aislamiento no vale la pena.")
|
154 |
-
|
155 |
-
# Thai
|
156 |
-
run_infer(
|
157 |
-
"พวกเขาต้องโกรธมากเลยใช่ไหม โทษทีนะลูกของเราไม่เป็นอะไรใช่ไหม ถึงเจ้าจะลากข้าไปเจ้าก็ไม่ได้อะไรอยู่ดี ผมคิดว่าจะดีกว่านะถ้าคุณไม่ออกไปไหน"
|
158 |
-
)
|
159 |
-
|
160 |
-
# Ukrainian
|
161 |
-
run_infer(
|
162 |
-
"розігни і зігни, будь ласка. я знаю, ваши люди храбры. было приятно, правда? для начала, тебе нужен собственный "
|
163 |
-
"свой самолет."
|
164 |
-
)
|
165 |
-
|
166 |
-
# Polish
|
167 |
-
run_infer(
|
168 |
-
"szedłem tylko do. pamiętaj, nigdy się nie obawiaj żyć na krawędzi ryzyka. ćwiczę już od dwóch tygodni a byłem "
|
169 |
-
"zabity tylko raz."
|
170 |
-
)
|
171 |
-
```
|
172 |
-
|
173 |
-
Expected output:
|
174 |
|
175 |
```text
|
176 |
Input: the new d.n.a. sample has been multiplexed, and the gametes are already dividing. let's get the c.p.d. over there. dinner's at 630 p.m. see that piece on you in the l.a. times? chicago p.d. will eat him alive.
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
|
|
|
|
182 |
Input: 魔鬼兵團都死了?但是如果这让你不快乐就别做了。您就不能发个电报吗。我們都準備好了。
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
|
|
|
|
187 |
Input: él es uno de aquellos. ¿tiene algo de beber? cómo el aislamiento no vale la pena.
|
188 |
-
|
189 |
-
|
190 |
-
|
|
|
|
|
191 |
Input: พวกเขาต้องโกรธมากเลยใช่ไหม โทษทีนะลูกของเราไม่เป็นอะไรใช่ไหม ถึงเจ้าจะลากข้าไปเจ้าก็ไม่ได้อะไรอยู่ดี ผมคิดว่าจะดีกว่านะถ้าคุณไม่ออกไปไหน
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
|
|
|
|
196 |
Input: розігни і зігни, будь ласка. я знаю, ваши люди храбры. было приятно, правда? для начала, тебе нужен собственный свой самолет.
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
|
|
|
|
201 |
Input: szedłem tylko do. pamiętaj, nigdy się nie obawiaj żyć na krawędzi ryzyka. ćwiczę już od dwóch tygodni a byłem zabity tylko raz.
|
202 |
-
|
203 |
-
|
204 |
-
|
|
|
|
|
205 |
```
|
206 |
|
|
|
|
|
|
|
207 |
# Model Architecture
|
208 |
This is a data-driven approach to SBD. The model uses a `SentencePiece` tokenizer, a BERT-style encoder, and a linear classifier to predict which subwords are sentence boundaries.
|
209 |
|
|
|
80 |
|
81 |
# Example Usage
|
82 |
|
83 |
+
The easiest way to use this model is to install [punctuators](https://github.com/1-800-BAD-CODE/punctuators):
|
84 |
|
85 |
+
```bash
|
86 |
+
$ pip install punctuators
|
87 |
+
```
|
88 |
+
|
89 |
+
<details open>
|
90 |
|
91 |
+
<summary>Example Usage</summary>
|
92 |
|
93 |
```python
|
|
|
|
|
|
|
|
|
94 |
from typing import List
|
95 |
|
96 |
+
from punctuators.models import SBDModelONNX
|
97 |
+
|
98 |
+
# Instantiate this model
|
99 |
+
# This will download the ONNX and SPE models. To clean up, delete this model from your HF cache directory.
|
100 |
+
m = SBDModelONNX.from_pretrained("sbd_multi_lang")
|
101 |
+
|
102 |
+
input_texts: List[str] = [
|
103 |
+
# English (with a lot of acronyms)
|
104 |
+
"the new d.n.a. sample has been multiplexed, and the gametes are already dividing. let's get the c.p.d. over there. dinner's at 630 p.m. see that piece on you in the l.a. times? chicago p.d. will eat him alive.",
|
105 |
+
# Chinese
|
106 |
+
"魔鬼兵團都死了?但是如果这让你不快乐就别做了。您就不能发个电报吗。我們都準備好了。",
|
107 |
+
# Spanish
|
108 |
+
"él es uno de aquellos. ¿tiene algo de beber? cómo el aislamiento no vale la pena.",
|
109 |
+
# Thai
|
110 |
+
"พวกเขาต้องโกรธมากเลยใช่ไหม โทษทีนะลูกของเราไม่เป็นอะไรใช่ไหม ถึงเจ้าจะลากข้าไปเจ้าก็ไม่ได้อะไรอยู่ดี ผมคิดว่าจะดีกว่านะถ้าคุณไม่ออกไปไหน",
|
111 |
+
# Ukrainian
|
112 |
+
"розігни і зігни, будь ласка. я знаю, ваши люди храбры. было приятно, правда? для начала, тебе нужен собственный свой самолет.",
|
113 |
+
# Polish
|
114 |
+
"szedłem tylko do. pamiętaj, nigdy się nie obawiaj żyć na krawędzi ryzyka. ćwiczę już od dwóch tygodni a byłem zabity tylko raz.",
|
115 |
+
]
|
116 |
+
|
117 |
+
# Run inference
|
118 |
+
results: List[List[str]] = m.infer(input_texts)
|
119 |
+
|
120 |
+
# Print each input and it's segmented outputs
|
121 |
+
for input_text, output_texts in zip(input_texts, results):
|
122 |
+
print(f"Input: {input_text}")
|
123 |
+
print(f"Outputs:")
|
124 |
+
for text in output_texts:
|
125 |
+
print(f"\t{text}")
|
126 |
+
print()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
```
|
128 |
|
129 |
+
</details>
|
|
|
|
|
130 |
|
131 |
+
<details open>
|
132 |
|
133 |
+
<summary>Expected outputs</summary>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
|
135 |
```text
|
136 |
Input: the new d.n.a. sample has been multiplexed, and the gametes are already dividing. let's get the c.p.d. over there. dinner's at 630 p.m. see that piece on you in the l.a. times? chicago p.d. will eat him alive.
|
137 |
+
Outputs:
|
138 |
+
the new d.n.a. sample has been multiplexed, and the gametes are already dividing.
|
139 |
+
let's get the c.p.d. over there.
|
140 |
+
dinner's at 630 p.m.
|
141 |
+
see that piece on you in the l.a. times?
|
142 |
+
chicago p.d. will eat him alive.
|
143 |
+
|
144 |
Input: 魔鬼兵團都死了?但是如果这让你不快乐就别做了。您就不能发个电报吗。我們都準備好了。
|
145 |
+
Outputs:
|
146 |
+
魔鬼兵團都死了?
|
147 |
+
但是如果这让你不快乐就别做了。
|
148 |
+
您就不能发个电报吗。
|
149 |
+
我們都準備好了。
|
150 |
+
|
151 |
Input: él es uno de aquellos. ¿tiene algo de beber? cómo el aislamiento no vale la pena.
|
152 |
+
Outputs:
|
153 |
+
él es uno de aquellos.
|
154 |
+
¿tiene algo de beber?
|
155 |
+
cómo el aislamiento no vale la pena.
|
156 |
+
|
157 |
Input: พวกเขาต้องโกรธมากเลยใช่ไหม โทษทีนะลูกของเราไม่เป็นอะไรใช่ไหม ถึงเจ้าจะลากข้าไปเจ้าก็ไม่ได้อะไรอยู่ดี ผมคิดว่าจะดีกว่านะถ้าคุณไม่ออกไปไหน
|
158 |
+
Outputs:
|
159 |
+
พวกเขาต้องโกรธมากเลยใช่ไหม
|
160 |
+
โทษทีนะลูกของเราไม่เป็นอะไรใช่ไหม
|
161 |
+
ถึงเจ้าจะลากข้าไปเจ้าก็ไม่ได้อะไรอยู่ดี
|
162 |
+
ผมคิดว่าจะดีกว่านะถ้าคุณไม่ออกไปไหน
|
163 |
+
|
164 |
Input: розігни і зігни, будь ласка. я знаю, ваши люди храбры. было приятно, правда? для начала, тебе нужен собственный свой самолет.
|
165 |
+
Outputs:
|
166 |
+
розігни і зігни, будь ласка.
|
167 |
+
я знаю, ваши люди храбры.
|
168 |
+
было приятно, правда?
|
169 |
+
для начала, тебе нужен собственный свой самолет.
|
170 |
+
|
171 |
Input: szedłem tylko do. pamiętaj, nigdy się nie obawiaj żyć na krawędzi ryzyka. ćwiczę już od dwóch tygodni a byłem zabity tylko raz.
|
172 |
+
Outputs:
|
173 |
+
szedłem tylko do.
|
174 |
+
pamiętaj, nigdy się nie obawiaj żyć na krawędzi ryzyka.
|
175 |
+
ćwiczę już od dwóch tygodni a byłem zabity tylko raz.
|
176 |
+
|
177 |
```
|
178 |
|
179 |
+
</details>
|
180 |
+
|
181 |
+
|
182 |
# Model Architecture
|
183 |
This is a data-driven approach to SBD. The model uses a `SentencePiece` tokenizer, a BERT-style encoder, and a linear classifier to predict which subwords are sentence boundaries.
|
184 |
|