Notepad ++: existe algum complemento ou regex ou macro para dividir texto longo em sentença limite

0

Eu estou fazendo um trabalho de tradução que exigiu que eu quebrasse páginas longas ou parágrafos no limite da sentença, que é ponto final (.) para o inglês, e Poorn-Viraam (।) para o hindi.

É chamado de "alinhamento" ou (provavelmente) tokenizing.

Para o Notepad ++ (w9-32 bit), existe algum complemento ou regex ou macro para dividir texto longo em sentenças. (em arquivos texto txt).

Na regex, não consigo encontrar. e substitua por. \ r \ n porque. é também utilizado como indicação de abreviatura, por exemplo, em, por exemplo, pvt., ltd., inc., etc., pelo que também o substituiria, o que não é desejável. Além disso, se várias frases estiverem lá entre parênteses () [] {}, então, também, elas não devem ser quebradas.

Então, eu acho que um único comando de regex simplesmente não funciona, ou será muito complexo para cuidar de todas as possibilidades.

tem que ser um conjunto de regex executado um após o outro, ou uma macro,

ou se alguém desenvolveu algum add-on para isso?

Obrigado.

Rawat

    
por V S Rawat 22.04.2017 / 09:06

1 resposta

2

Como Seth explicou, para realmente fazer isso de forma adequada, exigiria análise de linguagem natural. Por enquanto, isso só está disponível através de implementações especializadas como o analisador de Stanford , mas não como plugins do Notepad ++. Mas, dadas algumas suposições básicas, acho que você poderia contorná-lo usando expressões regex simples.

Eu começaria fazendo a suposição de que as frases que você deseja dividir terminam com '.', depois, têm um espaço e, em seguida, uma letra maiúscula. Isso não será perfeito, mas evita os parênteses e a abreviação na maioria dos casos .

Então ...

\. [A-Z]

E talvez, se as frases começarem com um número ...

\. [A-Z\d]

Então, talvez para torná-lo um pouco mais à prova de espaço em branco e lidar com os parênteses ainda melhor:

\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]
  • \ s + - para corresponder a um ou mais caracteres em branco
  • [^)]}] *? para garantir que não haja colchetes de fechamento atrás do. ou o espaço em branco

Acho que você pode brincar um pouco mais com isso, dependendo do seu caso de uso ...

Editar:
Eu estava pensando um pouco mais sobre isso. Eu acho que você também poderia supor que, enquanto uma sentença pode começar com apenas uma letra (como a palavra 'eu' ou 'A'), é improvável que termine em uma palavra de uma letra (em inglês).

Então você poderia usar

[a-zA-Z]{2}\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]

Como uma estratégia geral, tudo se resume a olhar para trás e avançar, para coisas que você espera ou não encontrar no final ou no início de uma frase.

    
por 28.04.2017 / 10:31