Questão Contagem de palavras hifenizadas e suas contrapartes não-hifenizadas em arquivos de látex


Eu tenho uma tese de aproximadamente 100.000 palavras, digitadas em látex. De certa forma inconsistentemente hifenizei algumas das palavras, por exemplo, "medo da aranha" e "medo da aranha".

Eu gostaria de obter uma lista de todas as palavras nos arquivos tex que são hifenizados (juntamente com uma contagem) e, em seguida, Eu também gostaria de uma contagem para o número de vezes que a versão não hifenizada também aparece.

Presumivelmente usando uma ferramenta como awk, grep ou sed?


6


origem


Eu atualizei um pouco minha resposta - MariusMatutiae
Boa sorte com sua tese. Ph.D. - MariusMatutiae
Obrigado. Boa sorte é definitivamente necessária! Mas eu acho que é uma discussão mais adequada para academia.stackexchange.com - Frank_Zafka


Respostas:


Você pode fazer isso por meio de um programa Perl elegante, texcount.pl, que você pode baixar de esta página da web. Este programa conta palavras em documentos do TeX (ou letras, ou fórmulas matemáticas, ...), uma tarefa não trivial dada a presença de palavras-chave específicas do TeX que devem ser excluídas da contagem. O programa tem vários recursos e opções (que, no entanto, eu nunca usei), mas o que você precisa é:

   texcount.pl -freq myfile.tex

que retornará a lista completa de palavras usadas (para saída padrão) com sua frequência de aparição. Você pode facilmente analisar isso para ver quando você usou combinações hifenizadas ou não hifenizadas. Observe que o programa pode incluir facilmente projetos com vários arquivos, em que seções, apêndices, bibliografia e assim por diante são armazenados em arquivos diferentes. Não vai, no entanto, (ou pelo menos, AFAIK) apontar para a localização precisa das palavras: você terá que caçá-las uma a uma.

Editar:

Uma solução rápida, mas parcial, para encontrar todas as ocorrências das expressões não hifenizadas é a seguinte:

  grep 'spider *fear' file.tex -n

que procura as duas palavras separadas por zero ou mais (o * símbolo) espaços e retorna o número da linha (a opção -n) dessa ocorrência. Isso é rápido, mas está incompleto porque o uso do grep implica automaticamente que não é possível localizar as expressões spider fear sempre que estes são divididos em duas ou mais linhas. Como para expressões arbitrárias isso pode ocorrer mesmo dentro de palavras, encontrar essas ocorrências exigirá um pouco mais de trabalho do que estou disposto a fazer.

Editar 2:

Outro bit da solução é o seguinte:

   grep 'spider *$'  -A 1 filename | grep '^ *fear' -n

Isso irá procurar por todas as linhas que terminam com spider seguido por um número não especificado de espaços em branco, seguido por outra linha que começa com um número não especificado de espaços e, em seguida, a palavra medo. Ao fazer isso, ele também mostrará o número da linha dessa ocorrência.

Lembre-se de que, em todos os casos anteriores, você está procurando apenas por expressões em minúsculas. Se você deseja incluir capitais, basta substituir grep -i para grep.

A única parte que está faltando agora é quando as palavras são quebradas entre linhas diferentes, como em

    spi
    der

3



Isso é interessante. Eu já uso o texcount para contagem de palavras, mas não percebi que poderia me fornecer informações de frequência. - Frank_Zafka
Certamente preenche a primeira parte dos meus requisitos, pois agora tenho informações de frequência para todas as palavras (hifenizadas ou não) no meu documento. Não está claro como encontrar as mesmas informações para as versões não-hifenizadas. Por exemplo: medo = 89. aranha-medo = 93. aranha = 114. Nem toda aranha e medo são versão não-hifenizada do medo da aranha. - Frank_Zafka
Adição interessante. - Frank_Zafka
@Frank_Zafka eu adicionei outro bit. - MariusMatutiae
Pensando nisso, o que é uma nova linha? Como estou escrevendo em Latex, nem todos os parágrafos são apenas uma linha longa? Os parágrafos são denotados deixando uma linha em branco. Nesse caso, nenhuma das palavras deve passar por cima da linha como no seu exemplo. Mas, novamente, sou mais uma pessoa de látex que uma pessoa grep. Eu sou um arqueiro colega embora ... obrigado por mais informações. - Frank_Zafka