ZurichNLP / nmtscore

A library of translation-based text similarity measures
MIT License
25 stars 6 forks source link

Some questions #10

Open gelsas opened 6 months ago

gelsas commented 6 months ago

Hello,

I just found this and still have a little bit hard time to understand it correctly.

For a project I am working on that tries to help with video localization I am trying to match two different languages text snippets.

The english text I have in a format like this:

"segment_1.mp4": {
    "text": "This is the fastest way to fix sciatica at home!",
    "start_time": 0,
    "end_time": 3.3
},
"segment_2.mp4": {
    "text": "If you're struggling with lower back pain & sciatica.",
    "start_time": 3.4,
    "end_time": 6.3
},
"segment_3.mp4": {
    "text": "it's most likely due to a herniated disc or a compressed spine",
    "start_time": 6.4,
    "end_time": 10.1
},

While the other language (in this example I used german comes in this format.

"Dies ist der schnellste Weg, Ischias zu Hause zu behandeln. Wenn Sie mit Schmerzen im unteren Rücken und Ischias zu kämpfen haben, liegt das höchstwahrscheinlich an einem Bandscheibenvorfall oder einer gestauchten Wirbelsäule, die durch jahrelange harte Arbeit, langes Sitzen, schlechte Körperhaltung und schädliche Spannungen an den Wirbeln verursacht wurde. Dies führt dazu, dass die Bandscheiben verrutschen und Druck auf die Nerven ausüben, was zu stechenden Schmerzen im unteren Rücken und in einem oder beiden Beinen führt. Millionen von Menschen leiden jeden Tag darunter. Ist das etwas, das wir beheben können? Nun, wenn wir unseren überlasteten Wirbeln eine Pause gäben, um sich zu entspannen und zu dekomprimieren, würden sie aufhören, Druck auf die entzündeten Nerven und Bandscheiben auszuüben, und mit der Heilung beginnen."

Now I am wondering if it would be somehow possible to use your nmtscore project to match the english snippets with its correct german snippets.

jvamvas commented 6 months ago

Hi @gelsas, that's an interesting problem! :)

Assuming that the alignment between the English and German snippets is monotonic: Yes, you could use NMTScore for that, but it might not be the fastest approach.

Here's a Colab with a simple proof of concept: https://colab.research.google.com/drive/14jhbyq5I1SinmO32ihN-MnoOjSXsfqyC?usp=sharing

It's just a greedy approach that tries out a range of possible segmentations and selects the one with the maximum NMTScore. This yields the following segmentation:

segment_1.mp4
English: "This is the fastest way to fix sciatica at home!"
German: "Dies ist der schnellste Weg, Ischias zu Hause zu behandeln."

segment_2.mp4
English: "If you're struggling with lower back pain & sciatica."
German: "Wenn Sie mit Schmerzen im unteren Rücken und Ischias zu kämpfen haben, liegt"

segment_3.mp4
English: "it's most likely due to a herniated disc or a compressed spine"
German: "das höchstwahrscheinlich an einem Bandscheibenvorfall oder einer gestauchten Wirbelsäule"