ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Ligature suppression word list
@ 2021-04-03 15:06 denis.maier
  2021-04-03 15:20 ` Arthur Rosendahl
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: denis.maier @ 2021-04-03 15:06 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 2460 bytes --]

Hi everyone

Now that Hans has implemented the new ligature suppression mechanism via language goodies - thanks again Hans! - we now need to come up with wordlists.

I've started working on a list of German words with ligatures that should be suppressed. The list is derived from the word list that comes with the lualatex selnolig package: https://github.com/micoloretan/selnolig/blob/master/selnolig-german-wordlist.tex

You can find the current list here : https://github.com/denismaier/context-nolig-wordlist

The list is currently organized as follows :


  1.  L.25-l.35: This specifies words where automatic pattern matching is more difficult than usually because the words contain multiple ligatures, some of which must be suppressed while others must be preserved. In the case of « Auflagefläche » it's even the same combination of letters. So here, we use the bar | to manually indicate points where no ligature must occur.
  2.  L. 36ff.: The vast amount of words is currently in that list that specifies words where a ff, fl, fi, ffi, or ffl ligature has to be broken up after the first f.
  3.  L.1804ff contain words where ffi, ffl, or fff ligatures have to be prevented after the second f, so the first two fs form a ligature.
  4.  The remaining blocks starting at L.1900, l. 2073, l. 2157, l. 2225, and l. 2277 suppress ligatures for « ft » and « fft »,  « fb » and « ffb », « fh » and « ffh», «fj» and «ffj», and «fk» and «ffk»

Obviously, that list is far from being complete, and the question is if it ever can be. Please have a look and feel free to propose more words to be included - either via mail or directly on github.

More generally, there's the question how such a list should be enhanced? I was thinking about two options:

  1.  The new language options features include a tracker that allows for tracking for which words in a given document ligature prevention happened, and which words haven't been touched by the mechanism. It should be possible to analyze the log file and to create lists of words with ligatures. Should be a rather simple step to derive new words for the ligature-suppression wordlist.
  2.  A bigger solution might be to use selnoligs patterns in a script that can be run over a large corpus, such as the DWDS (Digitales Wörterbuch der deutschen Sprache). That should produce us a more complete list of words where ligatures must be suppressed.

What do you think?

Best,
Denis

[-- Attachment #1.2: Type: text/html, Size: 12409 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:06 Ligature suppression word list denis.maier
@ 2021-04-03 15:20 ` Arthur Rosendahl
  2021-04-03 16:02   ` Hans Hagen
  2021-04-03 15:58 ` Hans Hagen
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 16+ messages in thread
From: Arthur Rosendahl @ 2021-04-03 15:20 UTC (permalink / raw)
  To: Mailing list for ConTeXt users

On Sat, Apr 03, 2021 at 03:06:22PM +0000, denis.maier@ub.unibe.ch wrote:
> What do you think?

  I think you should collaborate with the group of volunteers working on
German hyphenation and related topics.  They have a mailing list (in
German): https://lists.dante.de/mailman/listinfo/trennmuster which is
quite active and where Mico Loretan, the author of selnolig,
occasionally posts.  I’m sure they’ll be happy to help with suggestions
and collaborative efforts, even if all of the main contributors use
LaTeX.

	Arthur
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:06 Ligature suppression word list denis.maier
  2021-04-03 15:20 ` Arthur Rosendahl
@ 2021-04-03 15:58 ` Hans Hagen
  2021-04-06 14:59   ` denis.maier
  2021-04-06 15:03   ` denis.maier
  2021-04-03 16:03 ` Hans Hagen
  2021-04-03 16:42 ` Hans Hagen
  3 siblings, 2 replies; 16+ messages in thread
From: Hans Hagen @ 2021-04-03 15:58 UTC (permalink / raw)
  To: mailing list for ConTeXt users, denis.maier

On 4/3/2021 5:06 PM, denis.maier@ub.unibe.ch wrote:
> Hi everyone
> 
> Now that Hans has implemented the new ligature suppression mechanism via 
> language goodies – thanks again Hans! – we now need to come up with 
> wordlists.
> 
> I’ve started working on a list of German words with ligatures that 
> should be suppressed. The list is derived from the word list that comes 
> with the lualatex selnolig package: 
> https://github.com/micoloretan/selnolig/blob/master/selnolig-german-wordlist.tex 
> <https://github.com/micoloretan/selnolig/blob/master/selnolig-german-wordlist.tex>
> 
> You can find the current list here : 
> https://github.com/denismaier/context-nolig-wordlist 
> <https://github.com/denismaier/context-nolig-wordlist>
> 
> The list is currently organized as follows :
> 
>  1. L.25-l.35: This specifies words where automatic pattern matching is
>     more difficult than usually because the words contain multiple
>     ligatures, some of which must be suppressed while others must be
>     preserved. In the case of « Auflagefläche » it’s even the same
>     combination of letters. So here, we use the bar | to manually
>     indicate points where no ligature must occur.
>  2. L. 36ff.: The vast amount of words is currently in that list that
>     specifies words where a ff, fl, fi, ffi, or ffl ligature has to be
>     broken up after the first f.
>  3. L.1804ff contain words where ffi, ffl, or fff ligatures have to be
>     prevented after the second f, so the first two fs form a ligature.
>  4. The remaining blocks starting at L.1900, l. 2073, l. 2157, l. 2225,
>     and l. 2277 suppress ligatures for « ft » and « fft »,  « fb » and
>     « ffb », « fh » and « ffh», «fj» and «ffj», and «fk» and «ffk»
> 
> Obviously, that list is far from being complete, and the question is if 
> it ever can be. Please have a look and feel free to propose more words 
> to be included – either via mail or directly on github.
> 
> More generally, there’s the question how such a list should be enhanced? 
> I was thinking about two options:
> 
>  1. The new language options features include a tracker that allows for
>     tracking for which words in a given document ligature prevention
>     happened, and which words haven’t been touched by the mechanism. It
>     should be possible to analyze the log file and to create lists of
>     words with ligatures. Should be a rather simple step to derive new
>     words for the ligature-suppression wordlist.
>  2. A bigger solution might be to use selnoligs patterns in a script
>     that can be run over a large corpus, such as the DWDS (Digitales
>     Wörterbuch der deutschen Sprache). That should produce us a more
>     complete list of words where ligatures must be suppressed.

where is that DWDS ... i can write some code to deal with it (i'd rather 
start from the source than from some interpretation; who know what more 
there is to uncover)

additional info: we're talking of a mechanism sort of integrated in the 
hyphenation loop, where we can also handle compound words, if needed 
with details about how influence to hyphenate these) so the above 
question involves:

- exceptions to exceptions
- replacements before hyphenation
- compound words (including lhmin/rhmin overloads)
- (left right two sided) ligature and/or kern prevention

and whatever we like/need more (within reasonable bounds),

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:20 ` Arthur Rosendahl
@ 2021-04-03 16:02   ` Hans Hagen
  2021-04-08 19:37     ` Arthur Rosendahl
  0 siblings, 1 reply; 16+ messages in thread
From: Hans Hagen @ 2021-04-03 16:02 UTC (permalink / raw)
  To: Mailing list for ConTeXt users, Arthur Rosendahl

On 4/3/2021 5:20 PM, Arthur Rosendahl wrote:
> On Sat, Apr 03, 2021 at 03:06:22PM +0000, denis.maier@ub.unibe.ch wrote:
>> What do you think?
> 
>    I think you should collaborate with the group of volunteers working on
> German hyphenation and related topics.  They have a mailing list (in
> German): https://lists.dante.de/mailman/listinfo/trennmuster which is
> quite active and where Mico Loretan, the author of selnolig,
> occasionally posts.  I’m sure they’ll be happy to help with suggestions
> and collaborative efforts, even if all of the main contributors use
> LaTeX.

german is just an example, dutch has some specific things, and i bet 
other languages have their demands so my aim is some general mechanism 
(for which much is already in place btw) ... we're talking of a what i 
tag as 'languages goodies' just like we have 'font goodies' .. a plug in 
system

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:06 Ligature suppression word list denis.maier
  2021-04-03 15:20 ` Arthur Rosendahl
  2021-04-03 15:58 ` Hans Hagen
@ 2021-04-03 16:03 ` Hans Hagen
  2021-04-03 16:30   ` Thangalin
  2021-04-03 16:42 ` Hans Hagen
  3 siblings, 1 reply; 16+ messages in thread
From: Hans Hagen @ 2021-04-03 16:03 UTC (permalink / raw)
  To: mailing list for ConTeXt users, denis.maier

On 4/3/2021 5:06 PM, denis.maier@ub.unibe.ch wrote:

>  1. The new language options features include a tracker that allows for
>     tracking for which words in a given document ligature prevention
>     happened, and which words haven’t been touched by the mechanism. It
>     should be possible to analyze the log file and to create lists of
>     words with ligatures. Should be a rather simple step to derive new
>     words for the ligature-suppression wordlist.
I already have some code for that but can't make you an update (garden 
is / will be down for some days due to maintenance).

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 16:03 ` Hans Hagen
@ 2021-04-03 16:30   ` Thangalin
  2021-04-03 16:43     ` Hans Hagen
  0 siblings, 1 reply; 16+ messages in thread
From: Thangalin @ 2021-04-03 16:30 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 164 bytes --]

A starting list of English non-ligatures:

https://english.stackexchange.com/a/50957/22099

The entire SE thread has additional resources and is quite informative.

[-- Attachment #1.2: Type: text/html, Size: 315 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:06 Ligature suppression word list denis.maier
                   ` (2 preceding siblings ...)
  2021-04-03 16:03 ` Hans Hagen
@ 2021-04-03 16:42 ` Hans Hagen
  3 siblings, 0 replies; 16+ messages in thread
From: Hans Hagen @ 2021-04-03 16:42 UTC (permalink / raw)
  To: mailing list for ConTeXt users, denis.maier

On 4/3/2021 5:06 PM, denis.maier@ub.unibe.ch wrote:

> <https://github.com/denismaier/context-nolig-wordlist>

For those interested, that file only has ligature prevention definitions.

{
    actions = {
        ["|"] = "noligature"
    },
    words = [[
        Auf|lagefläche
        Auf|lageflächen
        Auf|lagenziffer
        Auf|lagenziffern
    ]],
},

can be (lig prevention already in words):

{
    words = [[
        Auf|lagefläche
        Auf|lageflächen
        Auf|lagenziffer
        Auf|lagenziffern
    ]],
},

or the more efficient (first match only):

{
    actions = {
        ["|"] = "noligature"
    },
    matches = { 1 }
    words = [[
        Auflagefläche
        Auflageflächen
        Auflagenziffer
        Auflagenziffern
    ]],
},

or if you want all matches:

{
    actions = {
        ["|"] = "noligature"
    },
    words = [[
        Auflagefläche
        Auflageflächen
        Auflagenziffer
        Auflagenziffern
    ]],
},

or when you want no kerns either (of course on can also use the petterns 
key):

    actions = {
        ["|"] = "noligature nokern"
    },
    words = [[
      ef|fe
    ]],
},

btw, user will also be able to do this in a document source

\startlanguageoptions[de]
     Zapf|innovation
     whatever+innovation
\stoplanguageoptions

ligature prevention in the first and compound word in the next one.

so, one way to see what we need is if users try to analyze their 
'exceptions' if they have them defined at all, so that we can spot 
possible tricks needed,

(i might actually combine this with exceptions that normally come after 
this stage)

Hans


-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 16:30   ` Thangalin
@ 2021-04-03 16:43     ` Hans Hagen
  2021-04-03 19:21       ` Thangalin
  0 siblings, 1 reply; 16+ messages in thread
From: Hans Hagen @ 2021-04-03 16:43 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Thangalin

On 4/3/2021 6:30 PM, Thangalin wrote:
> A starting list of English non-ligatures:
> 
> https://english.stackexchange.com/a/50957/22099 
> <https://english.stackexchange.com/a/50957/22099>
> 
> The entire SE thread has additional resources and is quite informative.
So can you make a file from that like we made as starting point for German?

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 16:43     ` Hans Hagen
@ 2021-04-03 19:21       ` Thangalin
  0 siblings, 0 replies; 16+ messages in thread
From: Thangalin @ 2021-04-03 19:21 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 10245 bytes --]

Untested. Lists are not subject to copyright, so public domain should be
legal, even though SE posts are CC-BY-SA. When a word has a single suffix
or prefix (e.g., safflower/s), the two words are listed together, rather
than using an explicit suffix/prefix section.

return {
    name       = "english",
    version    = "1.00",
    comment    = "English ligature suppression",
    author     = "Mico Loretan, Dave Jarvis, & Hans Hagen",
    copyright  = "Public domain",
    options    = {
        {
            actions = {
                ["|"] = "noligature"
            },
            words = [[
            ]],
        },
        {
            patterns = {
                fi  = "f|i",
                fl  = "f|l",
            },
            words = [[
                -- f|i
                deafish
                dwarfish
                elfish
                oafish
                selfish
                serfish
                unselfish
                wolfish

                -- f|l
                beefless
                briefless
                hoofless
                leafless
                roofless
                selfless
                turfless
            ]],
            suffixes = [[
                ness
                ly
            ]],
        },
        {
            patterns = {
                fi  = "f|i",
            },
            words = [[
                proofing
            ]],
            prefixes = [[
                air-
                child-
                fire-
                flame-
                moth-
                rust-
                sound-
                water-
                weather-
            ]],
        },
        {
            patterns = {
                ff  = "f|f",
                fi  = "f|i",
                fl  = "f|l",
                ffi = "f|fi",
                ffl = "f|fl",
            },
            words = [[
                -- f|f
                bookshelfful
                mantelshelfful
                shelfful

                -- f|i
                elfin

                chafing
                leafing
                loafing
                sheafing
                strafing
                vouchsafing
                beefing
                reefing
                briefing
                debriefing
                coifing
                fifing
                jackknifing
                knifing
                midwifing
                waifing
                wifing

                goofing
                hoofing
                roofing
                reroofing
                spoofing
                whoofing
                woofing

                gulfing
                begulfing
                engulfing
                ingulfing
                golfing
                gulfing
                rolfing
                selfing
                wolfing
                barfing
                bedwarfing
                dwarfing
                enserfing
                kerfing
                scarfing
                snarfing
                surfing
                windsurfing
                turfing
                wharfing

                beefier
                comfier
                goofier
                gulfier
                leafier
                surfier
                turfier
                beefiest
                comfiest
                goofiest
                gulfiest
                leafiest
                surfiest
                turfiest

                beefily
                goofily
                goofiness

                -- f|l
                aloofly
                briefly
                chiefly
                deafly
                liefly

                calflike
                dwarflike
                elflike
                gulflike
                hooflike
                leaflike
                rooflike
                serflike
                sheaflike
                shelflike
                surflike
                turflike
                waiflike
                wolflike

                halflife
                shelflife
                halfline
                roofline

                leaflet
                leaflets
                leafleted
                leafleting
                leafletting
                leafletted
                leafleteer

                pdflatex

                -- f|fi
                chaffinch
                wolffish

                -- f|fl
                safflower
                safflowers
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
            },
            words = [[
                -- ff|i
                cuffing
            ]],
            prefixes = [[
                hand
                un
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
            },
            words = [[
                -- ff|i
                feoffing
            ]],
            prefixes = [[
                en
                in
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
            },
            words = [[
                -- ff|i
                staffing
                stuffing
            ]],
            prefixes = [[
                re
                over
                under
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
            },
            words = [[
                -- ff|i
                ruffing
            ]],
            prefixes = [[
                cross
                over
                under
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
                ffl = "ff|l",
            },
            words = [[
                -- ff|i
                draffish
                giraffish
                gruffish
                offish
                raffish
                sniffish
                standoffish
                stiffish
                toffish

                -- ff|l
                cuffless
                stuffless
            ]],
            suffixes = [[
                ly
            ]],
        },
        {
            patterns = {
                ffl = "ff|l",
            },
            words = [[
                -- ff|l
                scofflaw
                cufflink
                offline
                offload
            ]],
            suffixes = [[
                s
                ed
                ing
            ]],
        },
        {
            patterns = {
                ffi = "ff|i",
                ffl = "ff|l",
            },
            words = [[
                -- ff|i
                baffing
                biffing
                boffing
                bluffing
                outbluffing
                buffing
                rebuffing
                chaffing
                cheffing
                chuffing
                coffing
                coiffing
                daffing
                doffing
                fluffing
                gaffing
                gruffing
                huffing
                luffing
                miffing
                muffing
                offing
                piaffing
                puffing
                quaffing
                reffing
                riffing
                sclaffing
                scoffing
                scuffing
                shroffing
                sluffing
                sniffing
                snuffing
                spiffing
                stiffing
                stuffing
                tariffing
                tiffing
                waffing
                whiffing
                yaffing

                buffier
                chaffier
                chuffier
                cliffier
                daffier
                fluffier
                gruffier
                huffier
                iffier
                miffier
                puffier
                scruffier
                sniffier
                snuffier
                spiffier
                stuffier
                buffiest
                chaffiest
                chuffiest
                cliffiest
                daffiest
                fluffiest
                gruffiest
                huffiest
                iffiest
                miffiest
                puffiest
                scruffiest
                sniffiest
                snuffiest
                spiffiest
                stuffiest

                daffily
                fluffily
                gruffily
                huffily
                puffily
                scruffily
                sniffily
                snuffily
                spiffily
                stuffily

                fluffiness
                huffiness
                iffiness
                puffiness
                scruffiness
                sniffiness
                spiffiness
                stuffiness

                baffies
                biffies
                jiffies
                taffies
                toffies

                waffie

                Pfaffian
                Wolffian
                Wulffian

                -- ff|l
                bluffly
                gruffly
                ruffly
                snuffly
                stiffly

                rufflike
                clifflike
            ]],
        },
        {
            patterns = {
                ft  = "f|t",
                fft = "ff|t",
            },
            words = [[
                -- f|t
                chieftain
                chieftains
                chieftaincy
                chieftainship

                fifteen
                fifteens
                fifteenth
                fifteenths
                fifth
                fifthly
                fifths
                fifties
                fiftieth
                fiftieths
                fifty
                fiftyish

                halftime
                halftone

                rooftop
                rooftops
                rooftree

                -- ff|t
                offtrack
            ]]
        }
    }
}

[-- Attachment #1.2: Type: text/html, Size: 15382 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:58 ` Hans Hagen
@ 2021-04-06 14:59   ` denis.maier
  2021-04-06 15:03   ` denis.maier
  1 sibling, 0 replies; 16+ messages in thread
From: denis.maier @ 2021-04-06 14:59 UTC (permalink / raw)
  To: j.hagen, ntg-context



> -----Ursprüngliche Nachricht-----
> Von: Hans Hagen <j.hagen@xs4all.nl>
> Gesendet: Samstag, 3. April 2021 17:58
> An: mailing list for ConTeXt users <ntg-context@ntg.nl>; Maier, Denis
> Christian (UB) <denis.maier@ub.unibe.ch>
> Betreff: Re: [NTG-context] Ligature suppression word list
> 
> On 4/3/2021 5:06 PM, denis.maier@ub.unibe.ch wrote:
> > Hi everyone
> >
> > Now that Hans has implemented the new ligature suppression mechanism
> > via language goodies - thanks again Hans! - we now need to come up
> > with wordlists.
> >
> > I've started working on a list of German words with ligatures that
> > should be suppressed. The list is derived from the word list that
> > comes with the lualatex selnolig package:
> > https://github.com/micoloretan/selnolig/blob/master/selnolig-german-wo
> > rdlist.tex
> > <https://github.com/micoloretan/selnolig/blob/master/selnolig-german-w
> > ordlist.tex>
> >
> > You can find the current list here :
> > https://github.com/denismaier/context-nolig-wordlist
> > <https://github.com/denismaier/context-nolig-wordlist>
> >
> > The list is currently organized as follows :
> >
> >  1. L.25-l.35: This specifies words where automatic pattern matching is
> >     more difficult than usually because the words contain multiple
> >     ligatures, some of which must be suppressed while others must be
> >     preserved. In the case of « Auflagefläche » it's even the same
> >     combination of letters. So here, we use the bar | to manually
> >     indicate points where no ligature must occur.
> >  2. L. 36ff.: The vast amount of words is currently in that list that
> >     specifies words where a ff, fl, fi, ffi, or ffl ligature has to be
> >     broken up after the first f.
> >  3. L.1804ff contain words where ffi, ffl, or fff ligatures have to be
> >     prevented after the second f, so the first two fs form a ligature.
> >  4. The remaining blocks starting at L.1900, l. 2073, l. 2157, l. 2225,
> >     and l. 2277 suppress ligatures for « ft » and « fft »,  « fb » and
> >     « ffb », « fh » and « ffh», «fj» and «ffj», and «fk» and «ffk»
> >
> > Obviously, that list is far from being complete, and the question is
> > if it ever can be. Please have a look and feel free to propose more
> > words to be included - either via mail or directly on github.
> >
> > More generally, there's the question how such a list should be enhanced?
> > I was thinking about two options:
> >
> >  1. The new language options features include a tracker that allows for
> >     tracking for which words in a given document ligature prevention
> >     happened, and which words haven't been touched by the mechanism. It
> >     should be possible to analyze the log file and to create lists of
> >     words with ligatures. Should be a rather simple step to derive new
> >     words for the ligature-suppression wordlist.
> >  2. A bigger solution might be to use selnoligs patterns in a script
> >     that can be run over a large corpus, such as the DWDS (Digitales
> >     Wörterbuch der deutschen Sprache). That should produce us a more
> >     complete list of words where ligatures must be suppressed.
> 
> where is that DWDS ... i can write some code to deal with it (i'd rather start
> from the source than from some interpretation; who know what more there
> is to uncover)

The DWDS is here: https://www.dwds.de/
But I still need to check how we can extract the words from there...

Denis
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 15:58 ` Hans Hagen
  2021-04-06 14:59   ` denis.maier
@ 2021-04-06 15:03   ` denis.maier
  1 sibling, 0 replies; 16+ messages in thread
From: denis.maier @ 2021-04-06 15:03 UTC (permalink / raw)
  To: j.hagen, ntg-context

> -----Ursprüngliche Nachricht-----
> Von: Hans Hagen <j.hagen@xs4all.nl>
> Gesendet: Samstag, 3. April 2021 17:58
> An: mailing list for ConTeXt users <ntg-context@ntg.nl>; Maier, Denis
> Christian (UB) <denis.maier@ub.unibe.ch>
> Betreff: Re: [NTG-context] Ligature suppression word list
> 
> On 4/3/2021 5:06 PM, denis.maier@ub.unibe.ch wrote:
> > Hi everyone
> >
> > Now that Hans has implemented the new ligature suppression mechanism
> > via language goodies - thanks again Hans! - we now need to come up
> > with wordlists.
> >
> > I've started working on a list of German words with ligatures that
> > should be suppressed. The list is derived from the word list that
> > comes with the lualatex selnolig package:
> > https://github.com/micoloretan/selnolig/blob/master/selnolig-german-wo
> > rdlist.tex
> > <https://github.com/micoloretan/selnolig/blob/master/selnolig-german-w
> > ordlist.tex>
> >
> > You can find the current list here :
> > https://github.com/denismaier/context-nolig-wordlist
> > <https://github.com/denismaier/context-nolig-wordlist>
> >
> > The list is currently organized as follows :
> >
> >  1. L.25-l.35: This specifies words where automatic pattern matching is
> >     more difficult than usually because the words contain multiple
> >     ligatures, some of which must be suppressed while others must be
> >     preserved. In the case of « Auflagefläche » it's even the same
> >     combination of letters. So here, we use the bar | to manually
> >     indicate points where no ligature must occur.
> >  2. L. 36ff.: The vast amount of words is currently in that list that
> >     specifies words where a ff, fl, fi, ffi, or ffl ligature has to be
> >     broken up after the first f.
> >  3. L.1804ff contain words where ffi, ffl, or fff ligatures have to be
> >     prevented after the second f, so the first two fs form a ligature.
> >  4. The remaining blocks starting at L.1900, l. 2073, l. 2157, l. 2225,
> >     and l. 2277 suppress ligatures for « ft » and « fft »,  « fb » and
> >     « ffb », « fh » and « ffh», «fj» and «ffj», and «fk» and «ffk»
> >
> > Obviously, that list is far from being complete, and the question is
> > if it ever can be. Please have a look and feel free to propose more
> > words to be included - either via mail or directly on github.
> >
> > More generally, there's the question how such a list should be enhanced?
> > I was thinking about two options:
> >
> >  1. The new language options features include a tracker that allows for
> >     tracking for which words in a given document ligature prevention
> >     happened, and which words haven't been touched by the mechanism. It
> >     should be possible to analyze the log file and to create lists of
> >     words with ligatures. Should be a rather simple step to derive new
> >     words for the ligature-suppression wordlist.
> >  2. A bigger solution might be to use selnoligs patterns in a script
> >     that can be run over a large corpus, such as the DWDS (Digitales
> >     Wörterbuch der deutschen Sprache). That should produce us a more
> >     complete list of words where ligatures must be suppressed.
> 
> where is that DWDS ... i can write some code to deal with it (i'd rather start
> from the source than from some interpretation; who know what more there
> is to uncover)

As it turn out, the linguists that helped with the selnolig package did use another corpus: Stuttgart "Deutsch" Web as Corpus
They describe their approach in that paper: https://raw.githubusercontent.com/SHildebrandt/selnolig-check/master/selnolig-check-documentation.pdf

Denis

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-03 16:02   ` Hans Hagen
@ 2021-04-08 19:37     ` Arthur Rosendahl
  2021-04-08 20:51       ` Hans Hagen
  0 siblings, 1 reply; 16+ messages in thread
From: Arthur Rosendahl @ 2021-04-08 19:37 UTC (permalink / raw)
  To: Hans Hagen; +Cc: Mailing list for ConTeXt users

On Sat, Apr 03, 2021 at 06:02:10PM +0200, Hans Hagen wrote:
> german is just an example, dutch has some specific things, and i bet other
> languages have their demands so my aim is some general mechanism

  I appreciate that, but if you want to have data of sufficiently good
quality to use this mechanism for individual languages, you need to
invest a *lot* of time for each one of them.  German is one of the very
few languages I know of that has an active group of people working to
produce that data, the “Trennmuster people”, as Mojca calls them ;-)
Their word list supports many fine points of typography, even those that
few programs can use, for example weighted hyphenation.  Ligature
prevention came in as a side project.

  Dutch, by contrast, does not seem so well served: the OpenTaal group
is dormant and no longer offers the hyphenated word list that was once
available (that was already the case five years ago).  The most relevant
page I find: https://www.opentaal.org/projecten/woordafbreking is from
2009.  There have apparently been recent updates by a single person (who
incidentally sometimes contributes to the German hyphenation working
group), but they’re rather generic.

	Best,

		Arthur
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-08 19:37     ` Arthur Rosendahl
@ 2021-04-08 20:51       ` Hans Hagen
  0 siblings, 0 replies; 16+ messages in thread
From: Hans Hagen @ 2021-04-08 20:51 UTC (permalink / raw)
  To: Mailing list for ConTeXt users

On 4/8/2021 9:37 PM, Arthur Rosendahl wrote:

>    Dutch, by contrast, does not seem so well served: the OpenTaal group
> is dormant and no longer offers the hyphenated word list that was once
> available (that was already the case five years ago).  The most relevant
> page I find: https://www.opentaal.org/projecten/woordafbreking is from
> 2009.  There have apparently been recent updates by a single person (who
> incidentally sometimes contributes to the German hyphenation working
> group), but they’re rather generic.
fwiw: They are active in collecting words (they also do stuff for open 
office). Dutch patterns don't chaneg much because the hyphenation is 
syllable based and predictable enough I think. There haven't been that 
many released of dutch patterns.

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-07 18:19 ` rha17
  2021-04-08  8:52   ` denis.maier
@ 2021-04-12 15:52   ` denis.maier
  1 sibling, 0 replies; 16+ messages in thread
From: denis.maier @ 2021-04-12 15:52 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 2733 bytes --]

Hi,

a small update on this one :
I’ve built a small python script that uses the patterns from the selnolig package to extract words with suspicious ligatures from the word list provided by the Uni Leipzig corpus project. Running the script over a corpus of over 1 million words produces the attached word list. The resulting list of words is not huge. That corpus gives us a list of about 790 words. I’ll need to check whether they already are in the goodies file or if I need to add them.

Anyway, I was thinking about making such a script more generic. Think of something along the lines of:
pdftotext book.pdf | showIncorrectLigatures.py > incorrect-ligatures.txt

Denis


Von: ntg-context <ntg-context-bounces@ntg.nl> Im Auftrag von rha17@t-online.de
Gesendet: Mittwoch, 7. April 2021 20:20
An: ntg-context@ntg.nl
Betreff: Re: [NTG-context] Ligature suppression word list



Message: 2
Date: Tue, 6 Apr 2021 15:03:54 +0000
From: <denis.maier@ub.unibe.ch<mailto:denis.maier@ub.unibe.ch>>
To: <j.hagen@xs4all.nl<mailto:j.hagen@xs4all.nl>>, <ntg-context@ntg.nl<mailto:ntg-context@ntg.nl>>
Subject: Re: [NTG-context] Ligature suppression word list
Message-ID: <41e6530172b54bffb7a82febff0a6be5@ub.unibe.ch<mailto:41e6530172b54bffb7a82febff0a6be5@ub.unibe.ch>>
Content-Type: text/plain; charset="iso-8859-1"


-----Ursprüngliche Nachricht-----
Von: Hans Hagen <j.hagen@xs4all.nl<mailto:j.hagen@xs4all.nl>>
Gesendet: Samstag, 3. April 2021 17:58
An: mailing list for ConTeXt users <ntg-context@ntg.nl<mailto:ntg-context@ntg.nl>>; Maier, Denis
Christian (UB) <denis.maier@ub.unibe.ch<mailto:denis.maier@ub.unibe.ch>>
Betreff: Re: [NTG-context] Ligature suppression word list

[…]




2. A bigger solution might be to use selnoligs patterns in a script
   that can be run over a large corpus, such as the DWDS (Digitales
   Wörterbuch der deutschen Sprache). That should produce us a more
   complete list of words where ligatures must be suppressed.

where is that DWDS ... i can write some code to deal with it (i'd rather start
from the source than from some interpretation; who know what more there
is to uncover)

As it turn out, the linguists that helped with the selnolig package did use another corpus: Stuttgart "Deutsch" Web as Corpus
They describe their approach in that paper: https://raw.githubusercontent.com/SHildebrandt/selnolig-check/master/selnolig-check-documentation.pdf

A lot of  corpora can be found here: https://wortschatz.uni-leipzig.de/de
especially here: https://wortschatz.uni-leipzig.de/de/download/German

There are corpora of many other languages, too, such as English, French, Dutch, Spanish, Russian, Japanese, Latin, …

HTH

Ralf


[-- Attachment #1.2: Type: text/html, Size: 7565 bytes --]

[-- Attachment #2: word-list.txt --]
[-- Type: text/plain, Size: 11751 bytes --]

Auftrag
Auftritt
Auftakt
Auflage
Auflösung
Aufträge
fünften
Auftraggeber
Auflagen
Auffassung
fünfte
Aufführung
Auftragseingang
auftreten
Auftritte
Fünftel
Straftaten
Auftragsbestand
Aufforderung
Auftreten
Auflistung
Auftrieb
Aufführungen
Straftat
auffällig
Auftragsvolumen
Auftragsbücher
Auffällig
Auftragseingänge
Schieflage
Auftragslage
auflösen
Auftragsbestätigung
Aufträgen
Cheftrainer
Fünfte
Auffinden
Kopftuch
auffallend
auffällige
elften
Auffassungen
Auflaufform
Auftraggebers
Auftritten
auffangen
offline
Auffahrt
Auftragswert
Fünfter
Auftaktveranstaltung
Auftragserteilung
Straftatbestand
auffüllen
Auflauf
Auftragnehmer
Dorffest
Kaufinteresse
Straftäter
auftauchen
elfte
Auffallend
fünften Mal
fünfter
Auffälligkeiten
Auftragsvergabe
Kaufinteressenten
auffindbar
auftretenden
Auffahrunfall
Prüfling
aufladen
auflaufen
Auftrages
Auftrags
Dampflokomotiven
auffälliges
fünftägigen
Auflösungen
Auftragen
Hofladen
Schlaflosigkeit
auftretende
Aufladen
Aufladung
Auflockerung
Auftaktspiel
Auftragsbüchern
Auftritts
Briefträger
Prüflinge
Schlaflabor
Schlaftabletten
kampflos
Auftaktquartal
Auftauchen
Auftragsabwicklung
Auftragseingängen
Dampflok
Hoffest
Tiefflug
auffallen
auffrischen
auffälliger
auffälligsten
schlaflose
Auffrischung
Auffällige
Auflehnung
Auflieger
Auftraggebern
Auftragssumme
Brieftasche
Elfter
Straftätern
auffälligste
fünftes
schlaflose Nächte
tarifliche
Auffahrunfälle
Auflagenhöhe
Auflassung
Auftaktsieg
Auftragsbearbeitung
Auftragseingangs
Auftragsmord
Auftragsrückgang
Auftretens
Kopfteil
Kopftuchverbot
Scheffler
Tariflohn
Tieflader
auffälligen
auftragsbezogen
Auffanglager
Aufführungspraxis
Auflockerungen
Auflösungsvertrag
Auftanken
Auftragnehmers
Auftragsbestände
Auftragsbuch
Auftragseinbruch
Auftragsplus
Auftrittsmöglichkeiten
Brieffreund
Golffahrer
Kopftücher
Offline
Tiefladern
auffallende
auffordern
aufführen
auflegen
auftauen
auftragen
auftreiben
fünftägige
schlaflosen
Auffahrten
Auffahrunfällen
Auffanggesellschaft
Aufforderungscharakter
Aufforstung
Auffälligstes
Auffüllen
Auflagefläche
Auflaufen
Auflösungserscheinungen
Auftauen
Auftragsannahme
Auftragsarbeiten
Auftragskomposition
Auftragsminus
Auftragsmorde
Auftrittsort
Brieffreundin
Brieffreundschaft
Brieftaschen
Brieftauben
Cheftrainer Andreas Hirsch
Fünften
Fünftes
Kampffeld
Kaufinteressent
Kopfleiste
Surftipps
Surftips
Tiefland
aufleben
auflockern
auftanken
auftrumpfen
stoffliche
tiefliegenden
Auffanglösung
Auffindung
Auffliegen
Aufforderung zum Tanz
Aufforderungen
Aufforstungsmaßnahmen
Auffälligkeit
Auffälligste
Auffälligster
Aufführungsorte
Auffüllung
Auflage von 2

Auflagenverstöße
Auflegen
Auflösen
Auflösungsbeschluss
Auflösungstendenzen
Auftaktdrittel
Auftaktrennen
Auftauzeit
Auftrag geben
Auftrage
Auftrageber
Auftraggeberin
Auftragsbestätigungen
Auftragseinbrüche
Auftragsentwicklung
Auftragsfertiger
Auftragsformular
Auftragsindex
Auftragsmörder
Auftragsnummer
Auftragspolster
Auftragswerken
Auftretende
Auftrittszeit
Auftrumpfen
Brieffreundschaften
Brieftaube
Dampflokomotive
Dampfloks
Dorffeste
Dorffesten
Dorffestes
Dorfteich
Elfte
Golfturnier
Hoffassade
Hoffung
Hoftür
Kampffahrzeuge
Kampflos
Kampflustig
Kopffreiheit
Kopftuch tragen
Kopftuchs
Kopftuchstreit
Prüffristen
Prüflings
Schlaflabore
Schlaflose
Schlaftablette
Straflager
Straflosigkeit
Straftatbestände
Straftraining
Surftipp
Tarifflucht
Tarifforderungen
Tarifliste
Tariflöhne
Tariftabelle
Tariftreuegesetz
Tiefflüge
Wurftechniken
auffordernde
auffälligem
auffällt
auflachen
auflagenstärkste
auflandigem
aufleuchten
aufliegen
auftauchenden
auftraggebende
auftun
elften Mal
ft
ftp
fünflappig
fünfte Mal
kopflos
schlaftrunkenen
stofflichen
Auffahren
Auffahrgefahr
Auffahrt zum
Auffallen
Auffang-
Auffangbeckens
Auffangbehälter
Auffangbett
Auffangen
Auffangrege-lungen
Auffangsieb
Auffangstationen
Auffangsystem
Auffangund
Auffangvorrichtung
Auffangwanne
Auffangzentrum
Auffassungsgabe
Auffassungsunterschied
Auffassungsunterschiede
Auffasungen
Auffindbarkeit
Auffindens
Auffindsituation
Auffllig
Auffordernd
Aufforstungen
Aufforstungsbescheid
Aufforstungsprogramm
Aufforstungsunternehmen
Auffrischen
Auffrischimpfung
Auffrischungen
Auffrischungsimpfung
Auffälligen
Auffälliges
Auffälligkeitsgrad
Aufführungen/Lesungen
Aufführungsbedingungen
Aufführungsblöcken
Aufführungsdauer
Aufführungskünste
Aufführungsort
Aufführungspause
Aufführungstermine
Auffüllarbeiten
Auffüllkapazität
Auffütterung
Auflagebereich
Auflagedatum
Auflagedruck
Auflageflaeche
Auflagemaß
Auflagen-Plus
Auflagendruck
Auflagendruckprozess
Auflagenrückgang
Auflagenzahlen
Auflagepunkte
Auflager
Auflagerreaktionen
Auflagezeit
Auflassungsvormerkung
Auflauf-Alternative
Auflaufbremse
Auflaufs
Auflaufschäden
Aufleben
Auflegen-Symbol
Aufleger
Auflegung
Aufleuchten
Auflichtbildverarbeitung
Auflichtmikroskopie
Aufloesung
Auflösezeit
Auflösung der Ehe
Auflösungs-Dreisatz
Auflösungs-Erscheinungen
Auflösungsantrag
Auflösungsarbeit
Auflösungsbeschluß
Auflösungsverlust
Auflösungsversammlung
Auflösungsvertrages
Auflösungsverträge
Auflüge
Auftakt-Heldin
Auftakt-Niederlage
Auftakt-Reise
Auftakt-Sieg
Auftaktabend
Auftaktaktionen
Auftaktbezwinger
Auftaktdrittels
Auftaktetappe
Auftaktfall
Auftaktgegner
Auftaktpartie
Auftaktpremiere
Auftaktprogramm
Auftaktsatz
Auftaktseminar
Auftaktshow
Auftaktspiele
Auftakttermin
Auftaktveranstaltungen
Auftaktvorlesung
Auftanken
Auftauchende
Auftauchgeschwindigkeit
Auftrag erteilen
Auftrag vergeben
Auftragbestand
Auftragemengen
Auftraggbeer
Auftrags-
Auftrags-volumens
Auftragsarbeit
Auftragsarten
Auftragsbaby
Auftragsberatungsstellen
Auftragsbericht
Auftragsbeschreibung
Auftragsbestandes
Auftragsbestands
Auftragsbestätigung/Lieferschein
Auftragsboom
Auftragsdaten
Auftragsdecke
Auftragsdurchlauf
Auftragseinbrüchen
Auftragsende
Auftragserholung
Auftragsfirma
Auftragsfirmen
Auftragsflaute
Auftragsflut
Auftragsformulare
Auftragsgegenstandes
Auftragsgeschwindigkeit
Auftragshöhe
Auftragsinhalt
Auftragskiller
Auftragskostenpauschale
Auftragskunst
Auftragslücken
Auftragsmangel
Auftragsmordes
Auftragsnamens
Auftragspalette
Auftragspauschale
Auftragspotential
Auftragspotenzial
Auftragsproduktion
Auftragsprojekte
Auftragsreichweite
Auftragsreichweiten
Auftragsrückgänge
Auftragssachbearbeiter
Auftragsschub
Auftragsschwankungen
Auftragssituation
Auftragsspitzen
Auftragsstammsatz
Auftragsstornierungen
Auftragsstornos
Auftragsstunden
Auftragssummen
Auftragssätze
Auftragstalfahrt
Auftragstyp1:Auftrag
Auftragsunternehmern
Auftragsverdoppelung
Auftragsverfolgung
Auftragsvergaben
Auftragsvielfalt
Auftragsvolumens
Auftragswarteschlange
Auftragswelle
Auftragswerk
Auftragswertes
Auftragswesens
Auftragszahlen
Auftragszugangsim
Auftragung
Auftreffen
Auftreffgeschwindigkeit
Auftreffpunkt
Auftrennen
Auftretenden
Auftriebkraft
Auftriebsgürtel
Auftriebshilfen
Auftriebskraft
Auftriebskräfte
Auftriebskörper
Auftriebsprinzip
Auftriebszuwachs
Auftriebsübungen
Auftriebverliehen
Auftrittes
Auftrittmöglichkeiten
Auftritts-Reihenfolge
Auftrittserfahrung
Auftrittsgarantie
Auftrittsmarathon
Auftrittsorte
Auftrittsreihe
Auftrittstermine
Auftrittstiefe
Auftrittsverbot
Auftrittsverbote
Auftrocknung
Auftrumpferei
Briefform
Brieffreunde
Brieflaufzeiten
Brieftaubenausstellung
Brieftaubenzuchtverein
Brieftitel
Briefträgern
Cheffige
Cheflimousinen
Cheftechnologin
Cheftoilette
Cheftrainer Andreas Bergmann
Cheftrainer Frank Mantek
Cheftrainer Maier
Cheftrainer Martin Rufener
Cheftrainer-Posten
Cheftrainer-Stelle
Cheftrainerin
Cheftrainerin Ulla Koch
Cheftrainers
Cheftrainerstelle
Cheftu
Dampffontäne
Dampflagerstätten
Dampfleck
Dampfleistung
Dampflock
Dampflokbestand
Dampflokeldorados
Dampflokfahrten
Dampflokführer
Dampflokzuschlag
Dampfluftbefeuchter
Dorffest-Atmosphäre
Dorffest-Ausschuss
Dorffestmacher
Dorffeuerwehr
Dorffilialen
Dorfidylle
Dorfitter
Dorfladen
Dorflebens
Dorflehrer
Dorftore
Dorftrottel
Dorfturnier
Fünflingen
Fünftausend
Fünftelregelung
Golffahrerin
Golffalte
Golfferien
Golflehrer
Golflektion
Golfliebhaber
Golftag
Golftouren
Grifflänge
Grifflöchern
Hanffaser
Hanffeld
Hanffreund
Hanfliteratur
Hoffeste
Hoffungen
Hoffungsträger
Hofi
Hofladens
Hofland
Hofleben
Hoflicht
Hoflieferant
Hoflnung
Hofläden
Hoftheater
Huflederhaut
Impffest
Impffrist
Impflösungen
Impflücken
Kampffertigkeit
Kampfformen
Kampfführung
Kampfinstrument
Kampflesben
Kampflied
Kampflinie
Kampflose
Kaufimpulse
Kopffeld
Kopffüßer-Kamasutra
Kopflänge
Kopfläuse
Kopftemperatur
Kopftransplantation
Kopftreffer
Kopftrommel
Kopfträger
Kopftuchdebatte
Kopftuchverbots
Laufteam
Lauftest
Offline-Betrachtung
Offline-Betrieb
Offline-Browser
Offline-Funktionalitäten
Offline-Geschäft
Offline-Kompaktierung
Offline-Programmierung
Offline-Publikationen
Offline-Test
Offline-Version
Offline-Vertriebskanal
Offline-Wikipedia
Offlineversion
Offlinezeit
Prüffehler
Prüffrist
Prüflaboratorien
Prüflaboratorium
Prüflabors
Prüflager
Prüflauf
Prüfleiter
Prüflingen
Prüflinges
Prüflingsanschluss
Prüfliste
Prüflizenzen
Prüftruppe
Ruftaste
Ruftasten
Rufton
Rufton-Listen
Ruftongenerator
Rumpfflächen
Rumpfform
Schiffl
Schifflände
Schlaflaborpersonal
Schlaflager
Schlaflandschaft
Schlaflieder
Schlafliegen
Schlaftabletten-Sucht
Schlaftemperatur
Schlaftheater
Schlaftrakt
Schlaftrunken
Schlaftyp
Schleiflack
Stoffideen
Stoffliche
Stofflänge
Straftatbestandes
Straftatbilanz
Straftatverdacht
Straftäterin
Straftäters
Sumpflandschaft
Surflehrerbody
Tarifforderung
Tariffragen
Tariffähigkeit
Tarifinformation
Tarifinnovationen
Tariflandschaft
Tariflichen
Tariflohns
Tariflohnsteigerung
Tarifthemen
Tariftreue-Erklärung
Tiefflieger
Tiefflugaktivitäten
Tiefflugangriffen
Tiefflugschneisen
Tiefland-Regenwälder
Tieflandes
Tieflandgebiete
Tieflandgebieten
Tieflandregenwälder
Tieflochbohren
Tieflohnbereich
Tieftauchen
Tieftauchweltrekord
Tieftemperaturforschung
Tiefton-Verstärkers
Tieftonbereich
Tieftöner
Topflappen
Torflaute
Torftopf
Wurftechnik
auffahren
auffahrenden
auffallenden
auffallenderweise
auffallendes
auffallendste
auffassen
auffinbar
aufflammen
aufflanschen
auffliegen
aufflog
auffordert
auffressen
auffährt
auffälligstes
aufladbare
aufladbaren
auflandige
auflassen
auflauernden
auflaufendem
auflaufender
auflebenden
aufleuchtenden
aufliegende
aufliegenden
auflockernde
auflösbar
auflösenden
auflöst
auflösungsgerichteten
auftakeln
auftauchende
auftauchte
auftischen
auftragsbezogene
auftragsbezogener
auftragsgefertigten
auftragsneutral
auftragsrelevanten
auftreffenden
auftretender
auftretende Lärmbelästigungen
auftrumpfende
auftrumpfender
briefliche
brieflichem
brieflichen
elftes
fbr-Branchenführer
fbr-Fördermitglieder
fffffffrrrrrrrrrrttttttttt
fh-potsdam.de
fh-zwickau.de
fhS
fhren
fkedvberatung
flappenden
ftp-Applikationen
ftp-Server
ftp.Uni-Augsburg.DE
ftp.cityhost.de
ftp.suse.com
ftplib.pl-Bibliothek
ftw.at
fünftausend
fünfteilige
fünfteiligen
fünftens
fünftägiger
fünftätigen
kampffrei
kampffreudige
kampflustigen
kopfförmig
offline-Lesen
prüffähige
schieflaufen
schlaflos
schlaftrunkener
senffarbenen
straflos
tariffähigen
tariflich
tariflichen
tariflose
tariftreue
tariftreuen
tieffrequenten

[-- Attachment #3: create-ligature-prevention-wordlist.txt --]
[-- Type: text/plain, Size: 16116 bytes --]

import re

# Step 1 Read the file
#input_file = 'deu_mixed-typical_2011_10K-words.txt'
input_file = 'deu_mixed-typical_2011_1M-words.txt'

with open(input_file, encoding='utf8') as f:
    lines = [re.sub('([0-9]+)\t|\t([0-9]+)\n', '', line) for line in f]

# Step 2 Filter

# either with list comprehension
# filtered_lines = [el for el in lines if re.match(r'.*ff.*', el)]

# or with a filter function
# removeLigsPattern = r'(.*auffo.*|.*aufli.*)'


# Don't suppress ligatures in these words
noFalsePositives = re.compile(r"""(
    Lauffen|
    Stauffach|
    Stauffen|
    stauffen|
    Stauffer|
    stauffer|
    Stauffisch|
    stauffisch|
    chauffier|
    Chauffier|
    chauffeur|
    Chauffeur|
    chauffement|
    cheffekt|
    Scheffel|
    scheffel|
    cheffizi|
    cheffé|
    Hoffacker|
    Hoffart|
    Hoffärt|
    Hoffricht|
    Hoffranz|
    tieffekt|
    tieffiziffahrtffallee|
    ffallerg|
    ffallokat|
    iffalt|
    offalt|
    Diffami|
    diffami|
    riffans|
    toffansffarbeit|
    toffeier|
    ffeindealerBüffeld|
    büffeld|
    ffeldenk|
    Iffeld|
    Löffeld|
    löffeld|
    Müffeld|
    müffeld|
    nüffeld|
    Riffeld|
    taffeld|
    toffeld|
    Trüffeld|
    trüffeld|
    Waffeld|
    waffeldffelleck|
    ffellinde|
    Muffell|
    muffell|
    öffell|
    taffell|
    toffell|
    üffell|
    Buffett|
    Büffett|
    buffett|
    büffett|
    Buffetz|
    Büffetz|
    affirm|
    Affirm|
    Affoltern|
    Suffrage|
    suffrage|
    toffrak|
    ffraum|
    ffraub|
    ffrausch|
    ffraup|
    toffreak|
    chiffrei|
    toffrei|
    uffreis|
    luffrei|
    iffreig|
    toffries|
    affront|
    Affront|
    iffund|
    toffund|
    iffuss|
    rtstraffern|
    ssstraffern|
    Briefing|
    ebriefing|
    Chefin|
    chefin|
    chefibel|
    chefiebe|
    chefigur|
    chefilm|
    chefili|
    chefirm|
    chefisch|
    Hofier|
    Laufig|
    Blaufi|
    laufilter|
    laufiedr|
    rumpfig|
    schafigu|
    chlafitt|
    Tarifier|
    tarifier|
    figelehrt|
    Delfinfo|
    Delfinhalt|
    raffinhalt|
    Delfinkont|
    auflair|
    aufläche|
    aufliegl|
    auflüssig|
    baufl|
    Baufl|
    blaufl|
    Blaufl|
    fraufl|
    Fraufl|
    gauflöte|
    graufl|
    Graufl|
    onauflo|
    onauflu|
    Moskaufl|
    Schauflieg|
    Schaufloß|
    schauflöß|
    Schauflug|
    Schauflüg|
    schauflieg|
    schaufloß|
    schauflöß|
    schauflug|
    schauflüg|
    Taufliege|
    achefl|
    ichefl|
    schefl|
    chefläche|
    dorfliese|
    dorflüg|
    thanflamm|
    hoflosk|
    eimpflanz|
    eimpfleg|
    timpfleg|
    kopflaster|
    kopfleg|
    kopflaum|
    Durufl|
    mbarufl|
    ruflagge|
    rufleisch|
    nsumpfl|
    isumpfl|
    ssumpfl|
    surfleck|
    surflüg|
    surflüss|
    tiefläche|
    atieflaute|
    atieflut|
    Topflagg|
    Topflitz|
    Topflor|
    rtopfli|
    topfläch|
    topfleg|
    topflop|
    topflug|
    topflüg|
    Torflagge|
    Torflügel|
    Torflut|
    torfläche|
    torflasch|
    torflieg|
    torflimm|
    torflitz|
    torfloss|
    torflott|
    torfluch|
    torflug|
    torflüg|
    torflüss|
    torfluss|
    torfluß|
    tropflug|
    aflosk|
    rafloss|
    ampfläch|
    ampflanz|
    ampfleg|
    eufleiß|
    eufleiss|
    siflage|
    ouflage|
    flandern|
    flandrisch|
    huffleb|
    nflehn|
    rflehn|
    Hoflehn|
    Kaltefleiter|
    Hoefler|
    Knoepffler|
    fflerhyth|
    flicht|
    Bempfling|
    Haflinge|
    flöchte|
    flohnetz|
    ntflohn|
    lfloss|
    lflosk|
    gopflaum|
    iopflast|
    nopflaster|
    opflair|
    opflanz|
    pfloss|
    Breifl|
    breifl|
    Dreifl|
    dreifl|
    Freifl|
    freifl|
    eiereifl|
    reifläch|
    reiflagg|
    reiflamm|
    reiflasch|
    reiflies|
    reiflock|
    reifloh|
    reiflöhe|
    reiflott|
    tafleck|
    taflege|
    weifleck|
    chwerfl|
    werflitz|
    araffind|
    raffinte|
    stoffiz|
    stoffig|
    omicheft[ceg]|
    elfterfolg|
    fünfterfolg|
    Fünfterfolg|
    fünftrang|
    Fünftrang|
    fünftreich|
    Fünftreich|
    Fünftoper|
    Fünftrund|
    Fünftäon|
    fünftältest|
    Fünftältest|
    Senftenberg|
    straftheit|
    ftagent|
    ftanzahl|
    ftanzeig|
    ftanzieh|
    ftanzüg|
    ftaristokr|
    ftassel|
    fteamt|
    nfteich|
    ifteich|
    fteilfr|
    fterminder|
    ftermitt|
    ftestation|
    ftestatist|
    ftextrakt|
    fthemm|
    ftiefigur|
    haftier|
    Muftier|
    stiftisch|
    ünftisch|
    ftodem|
    ftopfer|
    afträume|
    äfträume|
    rifträume|
    ufträume|
    ftresorp|
    ftrett|
    ftreturn|
    ftritter|
    Luftritt|
    nftüb|
    pftheit|
    tdurftrö|
    Werftr|
    werftr|
    Werftu|
    werftu|
    Duftas|
    duftas|
    Gruftas|
    gruftas|
    Luftas|
    luftas|
    uftassoz|
    tdurfta|
    Kafka|
    kafka|
    Piefke|
    piefkei|
    Safka|
    Potrafke|
    Sprafke|
    Shirafkan|
    Tirafkan|
    Selfkant|
    Rifkin|
    fjord|
    fjör|
    Ísafjarðarbær|
    fjell|
    fjall|
    fjäll|
    fjöll|
    Prokofjew|
    Sufjan|
    Eefje|
    Astafjew
)""", re.X)
# Patterns that indicate incorrect ligatures
incorrectLigatures = re.compile(r"""(
    #.*auffo.*|
    #.*aufli.*|
    #.*auffi.*
    Auff[aeiloruyäöü]|
    auff[aeiloruyäöü]|
    Brieff|
    brieff|
    Cheff|
    cheff[aäeioöruü]|
    Dampff|
    dampff|
    Dorff[aäeiloöruü]|
    dorff[aäeiloöruü]|
    Hanff|
    hanff|
    Hoff[aäiloöruü]|
    Golff|
    golff|
    Hoffern|
    hoffern|
    Hoffest|
    Impff|
    Kampff[aäeoöruü]|
    kampff[aäeoöruü]|
    Kopff[aäeoöruü]|
    kopff[aäeoöruü]|
    Klopff|
    klopff|
    Prüff|
    prüff|
    Ruffach|
    ruffach|
    Rumpff|
    Schaffang|
    Schaffarm|
    Schaffels|
    Schilff|
    schilff|
    Senff|
    senffa|
    senffl|
    senfl[aä]|
    Sumpff|
    sumpff|
    Tariff|
    tariff|
    Tieff|
    tieff|
    chaffron|
    eiffest|
    ffabrik|
    ffacet|
    ffachl|
    ffachm|
    ffäch|
    ffaden|
    ffäd|
    ffähig|
    ffahn|
    ffahr|
    ffähr|
    ffaktor|
    ffakult|
    ffall|
    ffäll|
    ffalt|
    ffält|
    ffami|
    ffanat|
    ffans|
    ffanta|
    ffarb|
    ffärb|
    ffaschi|
    ffassad|
    ffäul|
    ffecht|
    ffeder|
    ffedr|
    ffehl|
    ffeier|
    ffeind[els]|
    ffeld|
    ffell|
    ffeile|
    ffenster|
    fferien|
    ffernseh|
    ffertig|
    ffestl|
    ffests|
    ffetisch|
    ffetus|
    ffett|
    ffetz|
    ffeud|
    ffeue|
    ffilet|
    ffindung|
    ffirm|
    ffolg|
    ffoli|
    ffolter|
    ffond|
    fforder|
    fförder|
    fforell|
    fform|
    fförm|
    fforsch|
    fforen|
    fforu|
    ffoto|
    fföt|
    ffracht|
    ffrag|
    ffrak|
    ffrank|
    ffräs|
    ffrau|
    ffreak|
    ffregat|
    ffrei|
    ffremd|
    ffreq|
    ffreu|
    ffrisch|
    ffried|
    ffries|
    ffrist|
    ffriseu|
    ffrisur|
    ffront|
    ffrosch|
    ffrösch|
    ffrucht|
    ffrücht|
    ffrüh|
    ffund|
    fführ|
    ffunk|
    ffühl|
    ffüll|
    ffürst|
    ffuß|
    ffuss|
    ffüß|
    ffüss|
    ffutter|
    ffütter|
    hoffan|
    hoffersch|
    hoffest|
    hoffete|
    lffach|
    offegen|
    pffach|
    pffern|
    pffest|
    pffels|
    pffont|
    pffüh|
    reiffern|
    rffan|
    rffeel|
    rffest|
    rffinn|
    rffleck|
    straffern|
    ünff|
    wurff[aäeiloöruü]|
    Aufi|
    aufinstr|
    aufirr|
    aufisst|
    Briefi|
    briefi|
    Chefi|
    chefi|
    Chefin[a-mo-z]|
    chefind|
    Dorfi|
    dorfi|
    Hofi|
    Kampfi|
    kampfi|
    Kaufi|
    kaufi|
    Laufi|
    laufi|
    rüfi|
    Rumpfi|
    rumpfi|
    chafi|
    chlafi|
    Strafi|
    strafi|
    Tarifi|
    tarifi|
    Tiefinn|
    tiefinn|
    fidee|
    fideol|
    fidentif|
    fidentit|
    fidol|
    fidyll|
    figel|
    fikone|
    fillus|
    fimman|
    fimmob|
    fimmun|
    fimp|
    findex|
    findikat|
    findiv|
    findiz|
    findust|
    finfekt|
    finfiz|
    finfo|
    finfra|
    finfus|
    fingenieur|
    finhab|
    finhalat|
    finhalt|
    finitia|
    finjekt|
    finkont|
    finnenaus|
    finnenohr|
    finnenfl|
    finnenl|
    finnenraum|
    finnenräum|
    finnens|
    finner|
    finnig|
    finnov|
    finsass|
    finsekt|
    finsel|
    finserat|
    finsign|
    finspek|
    finsta|
    finstinkt|
    finstitu|
    finstrukt[io]|
    finstrum|
    finsuff|
    finszen|
    fintars|
    fintell|
    fintegr|
    fintens|
    finter|
    finton|
    fintrig|
    finvent|
    finvest|
    firis|
    fironi|
    firre|
    firru|
    fisolat|
    fisolie|
    fisoth|
    uffax|
    Aufl[aeiouyäöü]|
    aufl|
    bauflösen|
    blaufloch|
    blauflog|
    Briefl|
    briefl|
    Chefl|
    chefl|
    Dampfl|
    dampfl|
    Dorfl|
    dorfl|
    Fünfl|
    fünfl|
    Golfl|
    golfl|
    Hanfl|
    hanfl|
    Hofl|
    hofl|
    Huflatt|
    huflatt|
    Hufled|
    hufled|
    Impfl|
    impfla|
    impfle|
    impflücke|
    Kampfl|
    kampfl|
    Kopfl[äeioöuüy]|
    kopfl[äeioöuüy]|
    Köpfl[aäioöuüy]|
    köpfl[aäioöuüy]|
    Pfeifl|
    pfeifl|
    Pfiffl|
    pfiffl|
    Prüfl|
    prüfl|
    Reliefl|
    reliefl|
    Rufl|
    rufl|
    Schafl|
    schafl|
    Schiefl|
    schiefl|
    Schilfl|
    schilfl|
    Schlafl|
    schlafl|
    Schleifl|
    schleifl|
    Schrumpfl|
    schrumpfl|
    Schweifl|
    schweifl|
    Senfl|
    Steifl|
    steifl|
    Strafl|
    strafl|
    Strumpfl|
    strumpfl|
    Sumpfl|
    sumpfl|
    Surfl|
    surfl|
    Tarifl|
    tarifl|
    Tiefl|
    tiefl|
    Topfl|
    topfl|
    rtopfleg|
    Torfl|
    torfl|
    Tropfl|
    tropfl|
    Wurfl|
    wurfl|
    Würfl|
    würfl|
    alflede|
    aflied|
    aflos|
    aflück|
    ampfl[aäou]|
    arflad|
    äufle|
    eufle|
    flaberer|
    flabor|
    flage|
    flagun|
    flähm|
    flaminat|
    flamp|
    fland|
    fländ|
    fläng|
    flapp|
    flärm|
    fflatter|
    flauf|
    fläuf|
    flaun|
    fleb|
    alfleder|
    flehn|
    flehr|
    fleiden|
    flein|
    fleist|
    fleit|
    flektür|
    fler|
    fleut|
    flich|
    öpflicht|
    flieb|
    flief|
    flift|
    flig|
    flila|
    flinde|
    fling|
    flini|
    flinse|
    flisch|
    flist|
    fliter|
    flizenz|
    flobby|
    flöch|
    flöff|
    flohn|
    flöhn|
    flok|
    flord|
    flösch|
    flösu|
    fluft|
    flung|
    flust|
    Gipfle|
    gipfle|
    chopfl|
    lflady|
    lflast|
    lflos|
    nflehm|
    oflad|
    ofläd|
    oflück|
    opfla|
    öpfle|
    orflad|
    pflaut|
    pfleier|
    pflehm|
    pfleis|
    pfleu|
    pflid|
    pflied|
    pfloch|
    pflos|
    pflös|
    pflup|
    pflux|
    rfläd|
    rflück|
    rfluke|
    reifl|
    Reifl|
    Tafle|
    tafle|
    urflad|
    ürfla|
    urfloch|
    ürfloch|
    wafle|
    wefle|
    weifle|
    werfl|
    affind|
    ffibel|
    ffieb|
    ffigu|
    ffilm|
    ffilter|
    ffinal|
    ffinte|
    ffinanz|
    ffistel|
    ffixier|
    iffind|
    lffing|
    lffisch|
    nffing|
    pffi|
    reiffing|
    Stoffi|
    stoffi|
    ffinnen|
    cheffl[aiou]|
    Griffl|
    griffl|
    Offline|
    offline|
    Pfiffl|
    Scheffle|
    scheffle|
    Schiffl|
    schiffl|
    Stoffl|
    stoffl|
    afflu|
    fflamell|
    fflast|
    fflatsch|
    ffloch|
    fflos|
    ifflo|
    offlad|
    öffle|
    offlo|
    pufflack|
    taffle|
    ufflad|
    uffläd|
    luffleck|
    äfle|
    üffle|
    Auffl|
    auffl|
    eiffleck|
    ffläch|
    fflech|
    ffleisch|
    fflexib|
    fflies|
    fflimm|
    ffluch|
    fflüch|
    fflug|
    fflüg|
    fflur|
    ffluss|
    fflüs|
    fflut|
    iefflieg|
    iefflog|
    lfflach|
    mpffl|
    opffl|
    upffl|
    rfflad|
    rfflasch|
    wurfl|
    ft|
    Auft[aähioöruüy]|
    auft[aähioöruüy]|
    Brieft|
    brieft|
    Cheft|
    cheft[a-z]|
    Dorft|
    dorft|
    Elfte|
    elfte|
    Fünft[aäeoöruy]|
    fünft[aäeoöruy]|
    Golft|
    golft[hiruüy]|
    Greift[eio]|
    Hanftau|
    Hoft[aäehioäruüy]|
    hoft[aähioöruü]|
    Huftra|
    Kopft[aäehioäruüy]|
    Laufte|
    Prüft[aähioäruüy]|
    prüft[aähioöruü]|
    Ruft[aäehioäruüy]|
    Schaftal|
    Schaftor|
    Schaftreib|
    schaftal|
    schaftor|
    schaftreib|
    Schlaft|
    schlaft[aähioäruüy]|
    Schilft[äehiruüy]|
    schilft[hiruüy]|
    Senft[aäehioäruy]|
    Straft[aähioöruüy]|
    straft[aähioöruüy]|
    Sufft|
    Surft[ähiöüy]|
    Tarift|
    tarift|
    Tieft|
    Torft|
    torft|
    Wurft|
    wurft|
    fft[aähioöruüy]|
    Abstreiftest|
    Ankauftest|
    Hörprüftest|
    Hüpftest|
    Impftest|
    Kauftest|
    Klopftest|
    Kneiftest|
    Lichtschweiftest|
    Rückruftest|
    Schnupftest|
    Sumpftest|
    Tropftest|
    Wettkampftest|
    tofftest|
    aftee|
    auftee|
    lauftest|
    eiftie|
    eiftit|
    eiftr|
    elieft|
    enftei|
    ftabell|
    ftablett|
    ftafel|
    ftag|
    ftäg|
    ftalsg|
    ftanz|
    ftänz|
    ftari|
    ftarn|
    ftasse|
    ftatb|
    ftaten|
    ftätig|
    ftauch|
    ftaugl|
    ftaume|
    ftax|
    fteam|
    ftechn|
    ftedd|
    fteich|
    fteigw|
    fteil|
    ftelef|
    fteleph|
    ftelegr|
    fteller|
    ftempel|
    ftemper|
    ftempo|
    ftendenz|
    ftentak|
    fteppi|
    ftermin|
    ftermit|
    fterrain|
    fterrass|
    fterrin|
    fterror|
    ftestat|
    fteuf|
    ftext|
    ftheat|
    fthem|
    ftheor|
    ftherap|
    ftick|
    ftief|
    ftier|
    ftipp|
    ftirad|
    ftisch|
    ftod|
    fton|
    ftön|
    ftool|
    ftopf|
    ftöpf|
    ftorig|
    ftour|
    ftrader|
    ftradition|
    fträg|
    ftrain|
    ftränk|
    ftransp|
    fträume|
    ftrauri|
    ftreff|
    ftresor|
    ftret|
    ftrick|
    ftrieb|
    ftrief|
    ftrift|
    ftrimest|
    ftritt|
    ftrott|
    ftrüb|
    ftrunk|
    ftrupp|
    ftuch|
    ftüch|
    ftürk|
    fturm|
    ftürm|
    ftyp|
    ftyr|
    ftwist|
    graftum|
    graftüm|
    hoftest|
    iefta|
    iefto|
    ieftö|
    ieftra|
    lfta|
    lfto|
    lftö|
    lftum|
    nftü|
    nftübchen|
    ölfte|
    pft[aähioöruüy]|
    pftee|
    pfteig|
    pftender|
    rftr|
    werftrage|
    rftu|
    uftas|
    urfta|
    urfto|
    ünftor|
    fb|
    fh|
    fk|
    fj|
    fff
)""", re.X)

def findWrongLigatures(el):
    return False if re.match(noFalsePositives, el) else re.match(incorrectLigatures, el)

filtered_lines = list(filter(findWrongLigatures, lines))

# print(filtered_lines)

# Step 3 Write list of words to a file
with open('ligature-prevention-wordlist.txt', 'w') as file:
    file.writelines("%s\n" % line for line in filtered_lines)

[-- Attachment #4: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
  2021-04-07 18:19 ` rha17
@ 2021-04-08  8:52   ` denis.maier
  2021-04-12 15:52   ` denis.maier
  1 sibling, 0 replies; 16+ messages in thread
From: denis.maier @ 2021-04-08  8:52 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 550 bytes --]


Von: ntg-context <ntg-context-bounces@ntg.nl> Im Auftrag von rha17@t-online.de
Gesendet: Mittwoch, 7. April 2021 20:20
An: ntg-context@ntg.nl
Betreff: Re: [NTG-context] Ligature suppression word list

A lot of  corpora can be found here: https://wortschatz.uni-leipzig.de/de
especially here: https://wortschatz.uni-leipzig.de/de/download/German

There are corpora of many other languages, too, such as English, French, Dutch, Spanish, Russian, Japanese, Latin, …

HTH

Ralf


Wow, exactly what I was looking for. Thanks!

Denis

[-- Attachment #1.2: Type: text/html, Size: 3243 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Ligature suppression word list
       [not found] <mailman.248.1617745098.1120.ntg-context@ntg.nl>
@ 2021-04-07 18:19 ` rha17
  2021-04-08  8:52   ` denis.maier
  2021-04-12 15:52   ` denis.maier
  0 siblings, 2 replies; 16+ messages in thread
From: rha17 @ 2021-04-07 18:19 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 2103 bytes --]


> Message: 2
> Date: Tue, 6 Apr 2021 15:03:54 +0000
> From: <denis.maier@ub.unibe.ch <mailto:denis.maier@ub.unibe.ch>>
> To: <j.hagen@xs4all.nl <mailto:j.hagen@xs4all.nl>>, <ntg-context@ntg.nl <mailto:ntg-context@ntg.nl>>
> Subject: Re: [NTG-context] Ligature suppression word list
> Message-ID: <41e6530172b54bffb7a82febff0a6be5@ub.unibe.ch <mailto:41e6530172b54bffb7a82febff0a6be5@ub.unibe.ch>>
> Content-Type: text/plain; charset="iso-8859-1"
> 
>> -----Ursprüngliche Nachricht-----
>> Von: Hans Hagen <j.hagen@xs4all.nl <mailto:j.hagen@xs4all.nl>>
>> Gesendet: Samstag, 3. April 2021 17:58
>> An: mailing list for ConTeXt users <ntg-context@ntg.nl <mailto:ntg-context@ntg.nl>>; Maier, Denis
>> Christian (UB) <denis.maier@ub.unibe.ch <mailto:denis.maier@ub.unibe.ch>>
>> Betreff: Re: [NTG-context] Ligature suppression word list

[…]

>> 
>>> 2. A bigger solution might be to use selnoligs patterns in a script
>>>    that can be run over a large corpus, such as the DWDS (Digitales
>>>    Wörterbuch der deutschen Sprache). That should produce us a more
>>>    complete list of words where ligatures must be suppressed.
>> 
>> where is that DWDS ... i can write some code to deal with it (i'd rather start
>> from the source than from some interpretation; who know what more there
>> is to uncover)
> 
> As it turn out, the linguists that helped with the selnolig package did use another corpus: Stuttgart "Deutsch" Web as Corpus
> They describe their approach in that paper: https://raw.githubusercontent.com/SHildebrandt/selnolig-check/master/selnolig-check-documentation.pdf <https://raw.githubusercontent.com/SHildebrandt/selnolig-check/master/selnolig-check-documentation.pdf>

A lot of  corpora can be found here: https://wortschatz.uni-leipzig.de/de <https://wortschatz.uni-leipzig.de/de>
especially here: https://wortschatz.uni-leipzig.de/de/download/German <https://wortschatz.uni-leipzig.de/de/download/German>

There are corpora of many other languages, too, such as English, French, Dutch, Spanish, Russian, Japanese, Latin, …

HTH

Ralf


[-- Attachment #1.2: Type: text/html, Size: 3626 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-04-12 15:52 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-03 15:06 Ligature suppression word list denis.maier
2021-04-03 15:20 ` Arthur Rosendahl
2021-04-03 16:02   ` Hans Hagen
2021-04-08 19:37     ` Arthur Rosendahl
2021-04-08 20:51       ` Hans Hagen
2021-04-03 15:58 ` Hans Hagen
2021-04-06 14:59   ` denis.maier
2021-04-06 15:03   ` denis.maier
2021-04-03 16:03 ` Hans Hagen
2021-04-03 16:30   ` Thangalin
2021-04-03 16:43     ` Hans Hagen
2021-04-03 19:21       ` Thangalin
2021-04-03 16:42 ` Hans Hagen
     [not found] <mailman.248.1617745098.1120.ntg-context@ntg.nl>
2021-04-07 18:19 ` rha17
2021-04-08  8:52   ` denis.maier
2021-04-12 15:52   ` denis.maier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).