# Difference: FstForum (1 vs. 63)

#### Revision 632019-08-22 - AndreyAbramov

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Range handling

### AndreyAbramov - 2019-08-22 - 15:51

Hi,

How can I build an acceptor to properly handle ranges, e.g. "a[b..c]d"? Of course the obvious solution would be to generate enough arcs to handle every value within a range, but it can be optimized, e.g. with the custom arc type. Any suggestions?

Best, Andrey

<--/commentPlugin-->

## Epsilon is hardcoded to 0

### AndreyAbramov - 2019-08-22 - 15:46

Hi,

Why epsilon is hardcoded to 0? Given unicode code points are in range [0x0 .. 0x10ffff] it seems to be impossible to correctly process min code point? Am I right?

Best, Andrey

<--/commentPlugin-->

## Pynini on PyPI - Function as a Service

### BenoitThiery - 2019-07-02 - 06:43

#### Revision 622019-07-07 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 36 to 36

>
>

### KyleGorman - 2019-07-07 - 22:00

There are two ways to do this:

* I could put the source up there anyways but it won't work unless you have both current headers and libs installed in the normal location. * Alternatively I coudl set it up so that it first downloads and compiled a current OpenFst as part of the process. I looked into doing this and I couldn't find any useful documentation on how to go about this, but I would welcome help.

In the meantime some of my colleagues have had good look setting it up inside Docker.

<--/commentPlugin-->

#### Revision 612019-07-06 - MichaelRiley

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 3310 to 3310
Solved. Problem is compiler. Needs to be at least 4.8. The reported problem was with 4.6 version.
Deleted:
<
<

### GennyDoss - 2019-04-26 - 10:11

I think this error has occurred due to the Epson printer in the error state which the device was connected with and I tried to fix it through https://errorcode0x.com/fixed-epson-printer-in-error-state-issue/. Is there any other option for fixing it?

### MohammadHassan - 2019-05-17 - 07:12

This is a nice post. Thanks for sharing this useful information.

<a href="https://uaetechnician.ae/dubai-handyman-service">https://uaetechnician.ae/dubai-handyman-service</a>

### MohammadHassan - 2019-05-17 - 07:13

This is a nice post. Thanks for sharing this useful information.

### MaxGeone - 2019-07-06 - 10:52

<a href="https://www.techsupportdubai.com/led-tv-repair/">tv repair dubai</a> Thanks for sharing this information if you want to tv repair we have to provide all types of tv repair services like LED TV, LCD TV & others. contact our service TV Repair Services in Dubai.

<--/commentPlugin-->

Access control:

#### Revision 602019-07-06 - MaxGeone

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 3329 to 3329
https://uaetechnician.ae/dubai-handyman-service
>
>

### MaxGeone - 2019-07-06 - 10:52

<a href="https://www.techsupportdubai.com/led-tv-repair/">tv repair dubai</a> Thanks for sharing this information if you want to tv repair we have to provide all types of tv repair services like LED TV, LCD TV & others. contact our service TV Repair Services in Dubai.

<--/commentPlugin-->

Access control:

#### Revision 592019-07-02 - BenoitThiery

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Pynini on PyPI - Function as a Service

### BenoitThiery - 2019-07-02 - 06:43

Hi,

I have to migrate a Python software using pynini to a public cloud. I wish I could use Function as a Service, but that requires all dependencies to be available on PyPI.

Do you plan to make pynini available on PyPI?

Thanks a lot,

Benoit

<--/commentPlugin-->

## Vagrant environment for a quick OpenFST/OpenGRM setup

### WincentBalin - 2019-05-01 - 18:44

#### Revision 582019-05-20 - MichaelRiley

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 30 to 30

<--/commentPlugin-->
Deleted:
<
<

## Best large pst file splitter

### JasonStark - 2019-03-05 - 12:14

Split large PST files into small manageable parts is the best option to reduce the error from PST file. There are many techniques available over the market to split the PST file, but here I suggest you to use this pst splitter tool which safe divide the large PST file into small parts. This method is easy and best and also doesn't require any technical knowledge.. Although it prevents the file from being oversized, but it becomes harder to perform any operation related to mailing like creating events, saving appointments and sending or receiving mails. The problem keeps on going unless you remove large amount of data or reduce it normal size. In this way, Split PST File Tool is one suggested and successful trick to accomplish this. Apart from these, this is a proficient tool which removes specific mails from the large PST file and stores in a new PST file. It means it enables making several PST files of small sizes. You can also view the emails of new PST files into the email folder created by the tool with outlook program.

### StephanieMiller - 2019-05-04 - 04:29

You can use Split PST Tool. Split Outlook PST to break large sized PST files. Split Outlook PST all items stored in your PST files Contacts, email, tasks etc. Split PST Supported MS Outlook 2002, 2003,2007,2010 or 2013 format. This tool Support Windows 8/10/XP/Vista (32/64 bit)

<--/commentPlugin-->

## How To Repair Windows And Fix Corrupt Files Without CD/DVD

### AliceWilson - 2019-02-22 - 11:53

I have a third party window data recovery tool which is for those who want to get back and recover their losted and damaged files. you should use this brilliant tool which can easily recover and repair of data instantly. This tool is efficient and brilliant that can easily repair and recover all windows data without any hassle. All users both technical or non technical can easily use this tool without any technical issue because no technical or specific knowledge required for this tool in face all basic computer knowledge enough to access this tool. this tool can Support Recovery of data from All Internal and External Storage Devices and show the Preview of Recover data before saving items. you should definitely use this tool without any hesitation and this tool has Free Version which Allows you to recover data upto 1 GB absolutely free.Now getting lost files back is just a three steps away:-

Download – First, download Files Repair Tool and Install the program on your computer. Scan – Launch the program to scan the storage drive to find all the deleted and lost data. Recover – Now all you have to preview the files which are freshly recovered; choose files you want to save and store them on your desired location.

<--/commentPlugin-->

## How to Fix Corrupt Windows 10 System Files

### AliceWilson - 2019-02-22 - 11:51

If you want to get back your deleted and recover your data then i suggest you to try this brilliant third party window data recovery tool which can easily recover and get back your losted files in just few clicks. with this Now you can reclaim all of your precious lost data with this tool. Whether you have to find lost partitions, scan external drive of more than 2TB capacity or get formatted data back, Files Recovery Tools can do everything with few clicks. This tool also allows you trim the list of all the scanned items down. This way, one can easily find their desired files to recover. This tool is efficient and brilliant that can easily repair and recover all windows data without any hassle. All users both technical or non technical can easily use this tool without any technical issue because no technical or specific knowledge required for this tool in face all basic computer knowledge enough to access this tool. this tool can Support Recovery of data from All Internal and External Storage Devices and show the Preview of Recover data before saving items. you should definitely use this tool without any hesitation and this tool has Free Version which Allows you to recover data upto 1 GB absolutely free.

Advanced Scanning for Complex Operations:- This tool comes with two different modes – Normal Mode and Advanced Mode. While ‘Normal Scan’ is employed for recovery of all media files and documents, ‘Advanced Scan’ provides industry-specific solutions. For instance, if you have to do more complex operations for database recovery, then “Advanced Scan” is best option for you.

<--/commentPlugin-->

## Outlook pst to mbox converter

### PaulWalker - 2019-02-18 - 10:49

You can easily convert your PST file to MBOX from MS Outlook to Thunderbird mail. As both file formats are used by different email clients so it is not easy to use PST file format into Thunderbird mail. To convert PST file into MBOX for different email applications than it is mandatory to use third party tool PST to MBOX Converter. It easily resolves the problem of conversion from PST format into MBOX format, yes this tool can easily and securely convert your pst files to mbox and thunderbird. this tool is so amazing with great users interface and GUI. It allow the users to convert pst to mbox with the thunderbird and Support all the version of MS Outlook and Windows OS and Windows pst to mbox converter supports ANSI and UNICODE file type. All users both technical or non technical can easily use this tool without any technical skill because non technical of specific knowledge is required for this tool moreover basic computer knowledge is enough to access this tool and before taking any Decision you should try this Free trial version.

Just try free Demo version:- Just download the free trial version of this application; it makes sure about its features and functionality. Even technical and non-technical user also can operate this utility very easily and quickly.

Visit here to know more:- http://www.softmagnat.com/pst-to-mbox-converter.html

### JocelynTaylor - 2019-04-23 - 09:04

Get PST to MBOX Converter to export & convert unlimited PST files of Outlook 2003, 2007, 2010 2013, 2016 to MBOX format with attachments. The software supports all MBOX based email application, it means after successful conversion of PST files to MBOX, any MBOX email client user can view the file without any trouble. Users can download free PST to MBOX Converter software edition to analyze the working process of the software.

Visit Here:- http://www.pstfile.org/mbox/

### BrynleeMarker - 2019-05-20 - 12:30

I would not suggest you any manual method because it seems to be quite complicated. PST to MBOX Converter is the quick solution I would say on your situation.
<--/commentPlugin-->

## Outlook PST to mbox converter tool to export pst files to mbox

### PaulWalker - 2019-02-18 - 10:47

Migrate PST emails to MBOX format by using this PST mailbox converter Tool that easily converts all PST files to MBOX without MS Outlook. It Supports all PST supportive platform. The software supports all the versions of Windows OS. It comes up with many unique features such as drag and drops options, chooses destination location to save converted files, conversion in bulk, no files size limitations and many more. this is very well developed tool which can efficiently convert all yours emails from pst to mbox without any loss of original data. Let’s use the PST to MBOX Converter software for export as well as converting PST to MBOX files of Thunderbird, Apple Mail, and Mac Mail. This software easy and quick to run the outlooks, it works within few second and also able to save as well as read the outlook pst emails into mbox format. The PST to MBOX Converter software makes easy to migration or export pst into mbox file. All users both technical or non technical can easily use this tool without any technical skill because non technical of specific knowledge is required for this tool moreover basic computer knowledge is enough to access this tool and before taking any Decision you should try this Free trial version.

Use free trial version:- Download this Trial version of this proficient PST to MBOX Converter software which is facilitate to the exporting PST to the MBOX file format. It gives you an accurate result. Go through Free Version to See Original Results.

Visit here to know more:- http://www.pcrecoveryutility.com/pst-to-mbox-converter.html

### StephanieMiller - 2019-05-04 - 04:37

PST to MBOX Converter Software this tool helps to convert your PST file to MBOX file format, This tool easily to export your PST file to MBOX format. PST to MBOX file is supported in multiple email client like Pocomail, Entourage, Apple mail and many more. PST to MBOX Converter tool Support all versions of MS Outlook and Windows.

<--/commentPlugin-->

## Amazon workmail to office 365 migration

### RyanRaynold - 2019-02-12 - 11:47

Today I would like to introduce Amazon WorkMail to office 365 converter tool. This managed email and calendaring solution runs in the Cloud. It offers a unique set of security controls and works and efficiently convert amazon workmail to office 365. here’s also a browser-based interface). If your organization already has a directory of its own, WorkMail can make use of it via the recently introduced AWS Directory Service. If not, WorkMail will use Directory Service to create a directory for you as part of the setup process. this tool is most safe and secure tool which secure your data during migration. this tool is with some amazing feature which is efficient to convert amazon workmail to office 365 without any hassle. you should try this tool because All users both technical or non technical can easily access this tool without any technical knowledge because no technical knowledge required for this tool in fact basic computer knowledge is enough to access this tool. you should try this tool without any hesitation because this tool is develop as well option for you. i assure you that this tool is best option for you because this can convert aws to office 365 instantly without any hassle.

<--/commentPlugin-->

## Migrating amazon workmail to office 365

### RyanRaynold - 2019-02-12 - 11:44

This amazon workmmail to office 365 converter Software is fully authorized to migrate Amazon WorkMail to Office 365 because it has the separate option for completing the task by asking account credentials so it is also known as Amazon WorkMail to Office 365 converter Software. This tool is capable to transfer all email messages without any size limitation. it is fully automated software which does not require any manual step to completing the task. this tool allow the users to Migration of all mailbox data, including emails, appointments, and contacts and It has Automatic and manual CSV based source and destination addition. This tool can Supports all Office 365 plans and Exchange versions and this Export Amazon WorkMail to Office 365 is a reliable tool to migrate several Amazon WorkMail Mailboxes to Office 365 / Exchange Server Platform. All users both technical or non technical can easily access this tool without any technical knowledge because no technical knowledge required for this tool in fact basic computer knowledge is enough to access this tool. you should try this tool without any hesitation because this tool is develop as well option for you. i assure you that this tool is best option for you because this can convert aws to office 365 instantly without any hassle.

<--/commentPlugin-->

## ./configure fails on MacOS Mojave: could not determine ar interface

### NurL - 2019-02-08 - 22:00

When running ./configure on MacOS Mojave the configuration script exits with this error:

 checking for ar... ar checking the archiver (ar) interface... unknown configure: error: could not determine ar interface 

Something similar was already asked on SO but with no solution: https://stackoverflow.com/questions/47074736/autoconf-uses-wrong-ar-on-os-x

Anyone else ran into this?

<--/commentPlugin-->

## How to convert PST to amazon workmail

### LutherAnderson - 2019-02-07 - 09:52

To import pst files in amazon without any data loss first you need best and brilliant third party tool which is this pst to amazon workmail converter tool that can easily and securely convert all data from pst to amazon workmail. So when you convert PST to AWS by using PST to amazon workmail Converter, your all problem will be solved. It will give you the desired result. You can download the free trail version of this software which Allow User to Import 10 items/ folder from PST to Amazon WorkMail in free demo version. All users both technical and non technical can easily use this tool without any technical skill because basic computer knowledge is enough for this tool.

Selective Import filters:- This Import PST to Amazon WorkMail tool allows you to filter out the PST file data with its selection options and filters. with this tool You can choose the folders you want to import. With Date Range filter, you can import items of a specific period. It also has options to exclude folders and choose from item type.

<--/commentPlugin-->

## How to export PST data to AWS

### LutherAnderson - 2019-02-07 - 09:51

Migrate PST data to amazon workmail format using PST to amazon mailbox converter Tool that easily converts all PST files to MBOX without MS Outlook. It Supports all PST supportive platform. The software supports all the versions of Windows OS. It comes up with many unique features such as drag and drops options, chooses destination location to save converted files, conversion in bulk, no files size limitations and many more. This Import PST to Amazon WorkMail tool has been very well designed with features that efficient to Import or migrate PST file to Amazon WorkMail. Use Free version to import PST/OST to Amazon WorkMail in just few Clicks. All users both technical and non technical can easily use this tool without any technical skill because basic computer knowledge is enough for this tool.

Note:- Chekout its free trial version which can scan & Allow User to Import 10 items/ folder from PST to Amazon WorkMail in free demo version.

<--/commentPlugin-->

## Compilatoin problems CentOS

### EstherJudd - 2019-02-05 - 18:19

Line: 352 to 173

<--/commentPlugin-->
Deleted:
<
<

### PeterTaylor - 2019-01-16 - 11:01

For repair and restore quickbooks files You should try this third party QuickBooks Repair which is an efficient tool that can compatible to all Windows versions. i have been using this tool for very long time and i assure you that All the damaged QBW files are recovered with this QuickBooks Repair utility. In addition, this software also recovers previous business data and information and transactions of vendors, customers, company and staff most efficiently. All the transactions of the company are recovered in original currencies. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. you should try this brilliant tool without any hesitation and this can Supports Windows 10, 8, 7, Vista, XP, Server 2003 & 2000. all users can easily use this brilliant tool without any technical knowledge. you should use this brilliant tool.

<--/commentPlugin-->

## How to recover lost data from Auto data recovery

### PeterTaylor - 2019-01-16 - 10:59

You should use this quickbooks file recovery tool for repair and restore quickbooks files. This third party QuickBooks Recovery is strategically designed software to repair and recover damaged or corrupt QuickBooks QBW files and get you all the important accounting and financial information back. this tool can Supports Enterprise Solutions 9.0, 8.0 and 7.0, and efficiently recovers all the QuickBooks objects like Customers List, Vendor List, Employee List, Item List, Customer Type List, Payment Method List, Shipping Method List, Payment Terms List, Budget, Timer List, Class List, Sales Rep List, Sales Tax Code List, Price Level List, Job Type List and Chart of Accounts. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. all users can use this tool without any technical skill. you should try this brilliant tool for recover you quickbooks files without any hesitation.

<--/commentPlugin-->

## Excel repair tool to repair corrupt Excel workbook

### MarkDay - 2019-01-11 - 12:44

If your excel files get corrupted and when you open this, its show unsupported error files which was very important for you. if you want to repair your excel files then use this very Useful third party Tool for repair and recover your damage, corrupted/error excel file. this Excel recovery tool quickly repair and recovered the corrupted and damage/error excel file. using this wonderful recover tool that nicely works to repair, recover all versions from 2000 to 2016 and 2019 that includes 2000, 2003, 2007, 2010, 2013, etc. Best Solution for excel recovery tool damaged and corrupted excel data. all user can easily use this tool without any technical skill. you should try this brilliant and effective third party tool.

<--/commentPlugin-->

## Recovery for excel,recover,restore corrupted Excel

### MarkDay - 2019-01-11 - 12:42

Use This Wonderful and brilliant excel recover tool for your excel corrupted data. This is a third party software which is an effective & reliable tool which provides perfect solution to recover damaged excel file. This tool can recovers & restore all damaged/corrupted excel files. It supports all versions of MS excel and restores excels files in your location. It helps to preview of all damaged or corrupted excel files before restoration. Free availability of demo edition help you to easily understand application and the complete procedure of recovery. all users access this tool without any technical skill. you should try this brilliant and effective tool without any hesitation.

<--/commentPlugin-->

## How to recover deleted Quickbooks files

### JohnLowe - 2019-01-08 - 11:48

Use this brilliant and effective QuickBooks Repair tool is an efficient and reliable tool to repair damaged or corrupt QBW files and recover all the data in it. this is a third party tool and This software is capable to recover each and every bit of data that is relevant to Services, Customers, Employees and Vendors in QBW files. all type of users both technical and non technical can easily use this tool without any technical support because no technical skill required for this brilliant tool. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. you should try this brilliant tool without any hesitation and this can Supports Windows 10, 8, 7, Vista, XP, Server 2003 & 2000. you should try this brilliant tool because this is best for your bussiness.

<--/commentPlugin-->

## Non-constant assertion for static assertion

### AaronChantrill - 2018-12-28 - 17:45

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 1459 to 1459

>
>

### AdamJanin - 2019-05-20 - 18:15

After some more digging, another option is to update m4/ac_python_devel.m4 to a version that supports python3. One such is at http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_python_devel.m4.

A minor issue is that python3 seems to require exceptions to be enabled, so you also have to modify configure.ac so that CPPFLAGS doesn't include -fno-exceptions. There's probably a way to do this without enabling exceptions globally.

Any likelihood that this could get rolled into the standard release?

<--/commentPlugin-->

## How recover state mapping after ShortestPath?

#### Revision 562019-05-20 - BrynleeMarker

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 105 to 105
Visit Here:- http://www.pstfile.org/mbox/

>
>

### BrynleeMarker - 2019-05-20 - 12:30

I would not suggest you any manual method because it seems to be quite complicated. PST to MBOX Converter is the quick solution I would say on your situation.

<--/commentPlugin-->

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 3516 to 3516
I think this error has occurred due to the Epson printer in the error state which the device was connected with and I tried to fix it through https://errorcode0x.com/fixed-epson-printer-in-error-state-issue/. Is there any other option for fixing it?
>
>

### MohammadHassan - 2019-05-17 - 07:12

This is a nice post. Thanks for sharing this useful information.

<a href="https://uaetechnician.ae/dubai-handyman-service">https://uaetechnician.ae/dubai-handyman-service</a>

### MohammadHassan - 2019-05-17 - 07:13

This is a nice post. Thanks for sharing this useful information.

<--/commentPlugin-->

Access control:

#### Revision 542019-05-04 - StephanieMiller

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 40 to 40
>
>

### StephanieMiller - 2019-05-04 - 04:29

You can use Split PST Tool. Split Outlook PST to break large sized PST files. Split Outlook PST all items stored in your PST files Contacts, email, tasks etc. Split PST Supported MS Outlook 2002, 2003,2007,2010 or 2013 format. This tool Support Windows 8/10/XP/Vista (32/64 bit)

<--/commentPlugin-->
Line: 113 to 121

>
>

### StephanieMiller - 2019-05-04 - 04:37

PST to MBOX Converter Software this tool helps to convert your PST file to MBOX file format, This tool easily to export your PST file to MBOX format. PST to MBOX file is supported in multiple email client like Pocomail, Entourage, Apple mail and many more. PST to MBOX Converter tool Support all versions of MS Outlook and Windows.

<--/commentPlugin-->

## Amazon workmail to office 365 migration

#### Revision 532019-05-01 - WincentBalin

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Vagrant environment for a quick OpenFST/OpenGRM setup

### WincentBalin - 2019-05-01 - 18:44

Recently I published a Vagrant environment for a quick OpenFST/OpenGRM setup at https://github.com/wincentbalin/opengrm-vagrant. The whole package compilation process was put into a separate shell script.

If you already use Vagrant and need a quick automated setup of OpenFST/OpenGRM libraries and tools, feel free to check it out!

<--/commentPlugin-->

## Best large pst file splitter

### JasonStark - 2019-03-05 - 12:14

#### Revision 522019-04-26 - GennyDoss

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 3484 to 3484
Solved. Problem is compiler. Needs to be at least 4.8. The reported problem was with 4.6 version.
>
>

### GennyDoss - 2019-04-26 - 10:11

I think this error has occurred due to the Epson printer in the error state which the device was connected with and I tried to fix it through https://errorcode0x.com/fixed-epson-printer-in-error-state-issue/. Is there any other option for fixing it?

<--/commentPlugin-->

Access control:

#### Revision 512019-04-23 - JocelynTaylor

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 77 to 77
Visit here to know more:- http://www.softmagnat.com/pst-to-mbox-converter.html
>
>

### JocelynTaylor - 2019-04-23 - 09:04

Get PST to MBOX Converter to export & convert unlimited PST files of Outlook 2003, 2007, 2010 2013, 2016 to MBOX format with attachments. The software supports all MBOX based email application, it means after successful conversion of PST files to MBOX, any MBOX email client user can view the file without any trouble. Users can download free PST to MBOX Converter software edition to analyze the working process of the software.

Visit Here:- http://www.pstfile.org/mbox/

<--/commentPlugin-->

#### Revision 502019-03-05 - JasonStark

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Best large pst file splitter

### JasonStark - 2019-03-05 - 12:14

Split large PST files into small manageable parts is the best option to reduce the error from PST file. There are many techniques available over the market to split the PST file, but here I suggest you to use this pst splitter tool which safe divide the large PST file into small parts. This method is easy and best and also doesn't require any technical knowledge.. Although it prevents the file from being oversized, but it becomes harder to perform any operation related to mailing like creating events, saving appointments and sending or receiving mails. The problem keeps on going unless you remove large amount of data or reduce it normal size. In this way, Split PST File Tool is one suggested and successful trick to accomplish this. Apart from these, this is a proficient tool which removes specific mails from the large PST file and stores in a new PST file. It means it enables making several PST files of small sizes. You can also view the emails of new PST files into the email folder created by the tool with outlook program.

<--/commentPlugin-->

## How To Repair Windows And Fix Corrupt Files Without CD/DVD

### AliceWilson - 2019-02-22 - 11:53

#### Revision 492019-02-22 - AliceWilson

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## How To Repair Windows And Fix Corrupt Files Without CD/DVD

### AliceWilson - 2019-02-22 - 11:53

I have a third party window data recovery tool which is for those who want to get back and recover their losted and damaged files. you should use this brilliant tool which can easily recover and repair of data instantly. This tool is efficient and brilliant that can easily repair and recover all windows data without any hassle. All users both technical or non technical can easily use this tool without any technical issue because no technical or specific knowledge required for this tool in face all basic computer knowledge enough to access this tool. this tool can Support Recovery of data from All Internal and External Storage Devices and show the Preview of Recover data before saving items. you should definitely use this tool without any hesitation and this tool has Free Version which Allows you to recover data upto 1 GB absolutely free.Now getting lost files back is just a three steps away:-

Download – First, download Files Repair Tool and Install the program on your computer. Scan – Launch the program to scan the storage drive to find all the deleted and lost data. Recover – Now all you have to preview the files which are freshly recovered; choose files you want to save and store them on your desired location.

<--/commentPlugin-->

## How to Fix Corrupt Windows 10 System Files

### AliceWilson - 2019-02-22 - 11:51

If you want to get back your deleted and recover your data then i suggest you to try this brilliant third party window data recovery tool which can easily recover and get back your losted files in just few clicks. with this Now you can reclaim all of your precious lost data with this tool. Whether you have to find lost partitions, scan external drive of more than 2TB capacity or get formatted data back, Files Recovery Tools can do everything with few clicks. This tool also allows you trim the list of all the scanned items down. This way, one can easily find their desired files to recover. This tool is efficient and brilliant that can easily repair and recover all windows data without any hassle. All users both technical or non technical can easily use this tool without any technical issue because no technical or specific knowledge required for this tool in face all basic computer knowledge enough to access this tool. this tool can Support Recovery of data from All Internal and External Storage Devices and show the Preview of Recover data before saving items. you should definitely use this tool without any hesitation and this tool has Free Version which Allows you to recover data upto 1 GB absolutely free.

Advanced Scanning for Complex Operations:- This tool comes with two different modes – Normal Mode and Advanced Mode. While ‘Normal Scan’ is employed for recovery of all media files and documents, ‘Advanced Scan’ provides industry-specific solutions. For instance, if you have to do more complex operations for database recovery, then “Advanced Scan” is best option for you.

<--/commentPlugin-->

## Outlook pst to mbox converter

### PaulWalker - 2019-02-18 - 10:49

#### Revision 482019-02-18 - PaulWalker

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 18 to 18

 Subject (Edit - Preview) Comment (Edit - Preview)
>
>

## Outlook pst to mbox converter

### PaulWalker - 2019-02-18 - 10:49

You can easily convert your PST file to MBOX from MS Outlook to Thunderbird mail. As both file formats are used by different email clients so it is not easy to use PST file format into Thunderbird mail. To convert PST file into MBOX for different email applications than it is mandatory to use third party tool PST to MBOX Converter. It easily resolves the problem of conversion from PST format into MBOX format, yes this tool can easily and securely convert your pst files to mbox and thunderbird. this tool is so amazing with great users interface and GUI. It allow the users to convert pst to mbox with the thunderbird and Support all the version of MS Outlook and Windows OS and Windows pst to mbox converter supports ANSI and UNICODE file type. All users both technical or non technical can easily use this tool without any technical skill because non technical of specific knowledge is required for this tool moreover basic computer knowledge is enough to access this tool and before taking any Decision you should try this Free trial version.

Just try free Demo version:- Just download the free trial version of this application; it makes sure about its features and functionality. Even technical and non-technical user also can operate this utility very easily and quickly.

Visit here to know more:- http://www.softmagnat.com/pst-to-mbox-converter.html

<--/commentPlugin-->

## Outlook PST to mbox converter tool to export pst files to mbox

### PaulWalker - 2019-02-18 - 10:47

Migrate PST emails to MBOX format by using this PST mailbox converter Tool that easily converts all PST files to MBOX without MS Outlook. It Supports all PST supportive platform. The software supports all the versions of Windows OS. It comes up with many unique features such as drag and drops options, chooses destination location to save converted files, conversion in bulk, no files size limitations and many more. this is very well developed tool which can efficiently convert all yours emails from pst to mbox without any loss of original data. Let’s use the PST to MBOX Converter software for export as well as converting PST to MBOX files of Thunderbird, Apple Mail, and Mac Mail. This software easy and quick to run the outlooks, it works within few second and also able to save as well as read the outlook pst emails into mbox format. The PST to MBOX Converter software makes easy to migration or export pst into mbox file. All users both technical or non technical can easily use this tool without any technical skill because non technical of specific knowledge is required for this tool moreover basic computer knowledge is enough to access this tool and before taking any Decision you should try this Free trial version.

Use free trial version:- Download this Trial version of this proficient PST to MBOX Converter software which is facilitate to the exporting PST to the MBOX file format. It gives you an accurate result. Go through Free Version to See Original Results.

Visit here to know more:- http://www.pcrecoveryutility.com/pst-to-mbox-converter.html

<--/commentPlugin-->

## Amazon workmail to office 365 migration

### RyanRaynold - 2019-02-12 - 11:47

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 98 to 90

<--/commentPlugin-->
Deleted:
<
<

## Compilatoin problems CentOS

### EstherJudd - 2019-02-05 - 18:19

>
>
CentOS gcc 4.8.5
Changed:
<
<
export CXX="g++ -std=c++11"
>
>
export CXX="g++ -std=c++11"
openfst 1.7.1 ./configure --enable-compact-fsts --enable-const-fsts --enable-far --enable-lookahead-fsts --enable-pdt --enable-mpdt --enable-ngram-fsts --enable-python --prefix=/home/user/scripts
Line: 112 to 103
/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF $depbase.Tpo -c -o compat.lo compat.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF .deps/compat.Tpo -c compat.cc -fPIC -DPIC -o .libs/compat.o Changed: < < depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'; > > depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'; /bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF$depbase.Tpo -c -o flags.lo flags.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF .deps/flags.Tpo -c flags.cc -fPIC -DPIC -o .libs/flags.o
Changed:
<
<
depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
>
>
depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF $depbase.Tpo -c -o fst.lo fst.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF .deps/fst.Tpo -c fst.cc -fPIC -DPIC -o .libs/fst.o In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/float-weight.h:389:53: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<float> &weight, size_t n) { > > ./../include/fst/float-weight.h:389:53: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<float> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ > > ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/float-weight.h:395:54: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<double> &weight, size_t n) { > > ./../include/fst/float-weight.h:395:54: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<double> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ > > ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/float-weight.h:573:48: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<float> &weight, size_t n) { > > ./../include/fst/float-weight.h:573:48: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<float> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ > > ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/float-weight.h:579:49: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<double> &weight, size_t n) { > > ./../include/fst/float-weight.h:579:49: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<double> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: Changed: < < ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ > > ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ make[3]: * [fst.lo] Error 1 Changed: < < make[3]: Leaving directory /home/user/openfst-1.7.1/src/lib' > > make[3]: Leaving directory /home/user/openfst-1.7.1/src/lib' make[2]: * [all-recursive] Error 1 Changed: < < make[2]: Leaving directory /home/user/openfst-1.7.1/src' > > make[2]: Leaving directory /home/user/openfst-1.7.1/src' make[1]: * [all-recursive] Error 1 Changed: < < make[1]: Leaving directory /home/user/openfst-1.7.1' > > make[1]: Leaving directory /home/user/openfst-1.7.1' make: * [all] Error 2 openfst 1.7.0 Line: 189 to 180 /bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF$depbase.Tpo -c -o compat.lo compat.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF .deps/compat.Tpo -c compat.cc -fPIC -DPIC -o .libs/compat.o
Changed:
<
<
depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
>
>
depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF $depbase.Tpo -c -o flags.lo flags.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF .deps/flags.Tpo -c flags.cc -fPIC -DPIC -o .libs/flags.o Changed: < < depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'; > > depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'; /bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF$depbase.Tpo -c -o fst.lo fst.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF .deps/fst.Tpo -c fst.cc -fPIC -DPIC -o .libs/fst.o
Line: 201 to 192
from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion
Changed:
<
<
static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member");
>
>
static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member");
^
Changed:
<
<
./../include/fst/float-weight.h:229:50: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:229:1: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression
>
>
./../include/fst/float-weight.h:229:50: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:229:1: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression
make[3]: * [fst.lo] Error 1
Changed:
<
<
make[3]: Leaving directory /home/user/openfst-1.7.0/src/lib'
>
>
make[3]: Leaving directory /home/user/openfst-1.7.0/src/lib'
make[2]: * [all-recursive] Error 1
Changed:
<
<
make[2]: Leaving directory /home/user/openfst-1.7.0/src'
>
>
make[2]: Leaving directory /home/user/openfst-1.7.0/src'
make[1]: * [all-recursive] Error 1
Changed:
<
<
make[1]: Leaving directory /home/user/openfst-1.7.0'
>
>
make[1]: Leaving directory /home/user/openfst-1.7.0'
make: * [all] Error 2

openfst 1.6.9 compiles correctly, but then I run into the problem of compiling a compatible version of opengrm? Which version should work with it? I tried 1.3.3-5 and they all give this error:

/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT ngram-context.lo -MD -MP -MF .deps/ngram-context.Tpo -c -o ngram-context.lo ngram-context.cc libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT ngram-context.lo -MD -MP -MF .deps/ngram-context.Tpo -c ngram-context.cc -fPIC -DPIC -o .libs/ngram-context.o

Changed:
<
<
ngram-context.cc: In static member function ‘static void ngram::NGramContext::ParseContextInterval(const string&, std::vector<int>*, std::vector<int>*)’:
>
>
ngram-context.cc: In static member function ‘static void ngram::NGramContext::ParseContextInterval(const string&, std::vector<int>*, std::vector<int>*)’:
ngram-context.cc:128:3: error: ‘SplitString’ is not a member of ‘fst’
Changed:
<
<
fst::SplitString(line, ":", &contexts, true);
>
>
fst::SplitString(line, ":", &contexts, true);
^ ngram-context.cc:131:3: error: ‘SplitString’ is not a member of ‘fst’
Changed:
<
<
fst::SplitString(contexts[0], " ", &labels1, true);
>
>
fst::SplitString(contexts[0], " ", &labels1, true);
^ ngram-context.cc:132:3: error: ‘SplitString’ is not a member of ‘fst’
Changed:
<
<
fst::SplitString(contexts[1], " ", &labels2, true);
>
>
fst::SplitString(contexts[1], " ", &labels2, true);
^
Changed:
<
<
ngram-context.cc: In static member function ‘static void ngram::NGramExtendedContext::ParseContextIntervals(const string&, int, std::vector<ngram::NGramContext>*)’:
>
>
ngram-context.cc: In static member function ‘static void ngram::NGramExtendedContext::ParseContextIntervals(const string&, int, std::vector<ngram::NGramContext>*)’:
ngram-context.cc:234:3: error: ‘SplitString’ is not a member of ‘fst’
Changed:
<
<
fst::SplitString(line.get(), ",", &context_patterns, true);
>
>
fst::SplitString(line.get(), ",", &context_patterns, true);
^ make[3]: * [ngram-context.lo] Error 1
Changed:
<
<
make[3]: Leaving directory /home/user/opengrm-ngram-1.3.5/src/lib'
>
>
make[3]: Leaving directory /home/user/opengrm-ngram-1.3.5/src/lib'
make[2]: * [all-recursive] Error 1
Changed:
<
<
make[2]: Leaving directory /home/user/opengrm-ngram-1.3.5/src'
>
>
make[2]: Leaving directory /home/user/opengrm-ngram-1.3.5/src'
make[1]: * [all-recursive] Error 1
Changed:
<
<
make[1]: Leaving directory /home/user/opengrm-ngram-1.3.5'
>
>
make[1]: Leaving directory /home/user/opengrm-ngram-1.3.5'
make: * [all] Error 2
Line: 370 to 354
$CXX --version Changed: < < echo "#include <cstddef>" |$CXX -E -x c++ -std=c++11 -v - 2>&1
>
>
echo "#include <cstddef>" | $CXX -E -x c++ -std=c++11 -v - 2>&1 to get the compiler version and information about the standard library. Line: 385 to 370 This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Changed: < < [dearvolt@vostro openfst]$ echo "#include <cstddef>" | g++ -E -x c++ -std=c++11 -v - 2>&1
>
>
[dearvolt@vostro openfst]echo "#include <cstddef>" | g++ -E -x c++ -std=c++11 -v - 2>&1 Using built-in specs. COLLECT_GCC=g++ Target: x86_64-pc-linux-gnu Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp --enable-cet=auto Thread model: posix gcc version 8.2.1 20181127 (GCC) Changed: < < COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' > > COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/cc1plus -E -quiet -v -D_GNU_SOURCE - -mtune=generic -march=x86-64 -std=c++11 Changed: < < ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: > > ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1 /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/x86_64-pc-linux-gnu /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/backward Line: 405 to 390 /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include-fixed /usr/include End of search list. Changed: < < # 1 "<stdin>" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "<stdin>" # 1 "/usr/include/c++/8.2.1/cstddef" 1 3 # 42 "/usr/include/c++/8.2.1/cstddef" 3 # 43 "/usr/include/c++/8.2.1/cstddef" 3 > > # 1 "<stdin>" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "<stdin>" # 1 "/usr/include/c++/8.2.1/cstddef" 1 3 # 42 "/usr/include/c++/8.2.1/cstddef" 3 Added: > > # 43 "/usr/include/c++/8.2.1/cstddef" 3 Added: > > # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 1 3 # 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 Changed: < < # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 1 3 # 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 # 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 > > # 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 namespace std { typedef long unsigned int size_t; Line: 434 to 413 typedef decltype(nullptr) nullptr_t; } Changed: < < # 258 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 > > # 258 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 namespace std { Changed: < < inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } > > inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } } namespace __gnu_cxx { Changed: < < inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } > > inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } } Changed: < < # 508 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3 # 39 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 3 # 1 "/usr/include/features.h" 1 3 4 # 428 "/usr/include/features.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 442 "/usr/include/sys/cdefs.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 443 "/usr/include/sys/cdefs.h" 2 3 4 # 1 "/usr/include/bits/long-double.h" 1 3 4 # 444 "/usr/include/sys/cdefs.h" 2 3 4 # 429 "/usr/include/features.h" 2 3 4 # 452 "/usr/include/features.h" 3 4 # 1 "/usr/include/gnu/stubs.h" 1 3 4 # 10 "/usr/include/gnu/stubs.h" 3 4 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4 # 11 "/usr/include/gnu/stubs.h" 2 3 4 # 453 "/usr/include/features.h" 2 3 4 # 40 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3 # 509 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3 # 512 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 # 50 "/usr/include/c++/8.2.1/cstddef" 2 3 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 1 3 4 # 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 > > # 508 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3 # 39 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 3 # 1 "/usr/include/features.h" 1 3 4 # 428 "/usr/include/features.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 442 "/usr/include/sys/cdefs.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 443 "/usr/include/sys/cdefs.h" 2 3 4 # 1 "/usr/include/bits/long-double.h" 1 3 4 # 444 "/usr/include/sys/cdefs.h" 2 3 4 # 429 "/usr/include/features.h" 2 3 4 # 452 "/usr/include/features.h" 3 4 # 1 "/usr/include/gnu/stubs.h" 1 3 4 # 10 "/usr/include/gnu/stubs.h" 3 4 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4 # 11 "/usr/include/gnu/stubs.h" 2 3 4 # 453 "/usr/include/features.h" 2 3 4 # 40 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3 # 509 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3 # 512 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 # 50 "/usr/include/c++/8.2.1/cstddef" 2 3 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 1 3 4 # 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef long int ptrdiff_t; Changed: < < # 216 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 > > # 216 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef long unsigned int size_t; Changed: < < # 426 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 > > # 426 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef struct { long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); Changed: < < # 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 > > # 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 } max_align_t; Deleted: < < typedef decltype(nullptr) nullptr_t; Changed: < < # 51 "/usr/include/c++/8.2.1/cstddef" 2 3 > > # 51 "/usr/include/c++/8.2.1/cstddef" 2 3 namespace std { using ::max_align_t; } Changed: < < # 1 "<stdin>" 2 > > # 1 "<stdin>" 2 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../:/lib/:/usr/lib/ Changed: < < COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' > > COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' Line: 512 to 486 Thanks for that link. Very helpful! Changed: < < As Kyle mentioned above, you can simply comment out or remove the static_assert lines in float-weight.h. That should be entirely harmless, and we'll most likely (re)move those lines very soon. > > As Kyle mentioned above, you can simply comment out or remove the static_assert lines in float-weight.h. That should be entirely harmless, and we'll most likely (re)move those lines very soon. Changed: < < With the static_assert's present, the best working hypothesis is that there is some misunderstanding or disagreement about which expressions are in fact constexpr in C++11. Your compilation fails for static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"), which involves the expanded subexpression (+QNaNf >= -3.40282347e+38f) which the compiler considers to not be a constant expression. Either way, that's a problem. If the compiler is right, that's most definitely a problem; if the compiler is wrong, it still requires a workaround. > > With the static_assert's present, the best working hypothesis is that there is some misunderstanding or disagreement about which expressions are in fact constexpr in C++11. Your compilation fails for static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"), which involves the expanded subexpression (+QNaNf >= -3.40282347e+38f) which the compiler considers to not be a constant expression. Either way, that's a problem. If the compiler is right, that's most definitely a problem; if the compiler is wrong, it still requires a workaround. ### MartinJansche - 2019-01-03 - 22:17 Line: 518 to 492 ### MartinJansche - 2019-01-03 - 22:17 Added: > > Changed: < < After some further investigation, I've filed the following bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88683 > > After some further investigation, I've filed the following bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88683 ### DewaldDeJager - 2019-01-04 - 05:47 Line: 530 to 506 To make it easier to test different versions of the compiler, I have created a Dockerfile for the project. The file along with usage instructions can be found here: https://gist.github.com/DewaldDeJager/ef2a5845866f8008d6540b7dd72eb4cd Changed: < < I am the maintainer of OpenFst on the Arch User Repository and the packaging script downloads OpenFst directly from the website to the user's computer. As such, it is impractical for me to remove the static asserts from the source code before the code gets compiled on the user's computer. > > I am the maintainer of OpenFst on the Arch User Repository and the packaging script downloads OpenFst directly from the website to the user's computer. As such, it is impractical for me to remove the static asserts from the source code before the code gets compiled on the user's computer. Thank you for the help =) Line: 541 to 518 ### KyleGorman - 2019-01-07 - 19:55 Added: > > Changed: < < I suppose we could bump the version, but isn't there any way to patch "downstream" in the meantime? > > I suppose we could bump the version, but isn't there any way to patch "downstream" in the meantime? ### DewaldDeJager - 2019-01-10 - 06:28 Line: 551 to 530 ### DewaldDeJager - 2019-01-14 - 11:59 Added: > > Changed: < < @MartinJansche @KyleGorman Any news? Is there any public facing Git repo with the source? I'm even willing to make the patch myself. All I've found is an outdated mirror on Martin's GitHub profile. > > @MartinJansche @KyleGorman Any news? Is there any public facing Git repo with the source? I'm even willing to make the patch myself. All I've found is an outdated mirror on Martin's GitHub profile. On a side note, is there anything that can be done to stop these annoying spam forum posts? Perhaps a CAPTCHA step during registration? Line: 1312 to 1295 After a lot of tweaks to the configuration file and Makefile I managed to successfully install the Python extension for Python 3. See this Dockerfile: https://gist.github.com/0xnurl/6f97eb39409ea48db31fe315fd1e208f Added: > > ### AdamJanin - 2019-02-14 - 00:25 A bit of a necropost, but here's an alternate way to build pywrapfst for python3. It's substantially the same as NurL's method, but uses plain command line rather than Docker. The gist is to configure with python2, then point at python3 using environment variables that will override the variables in the Makefiles. This all assumes "python" points to python2 and "python3" points to python3. I tried to make no other assumptions about how python was installed.  # Download and configure as usual. wget http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.7.1.tar.gz tar xzvf openfst-1.7.1.tar.gz cd openfst-1.7.1/ mkdir install ./configure --prefix=(pwd)/install --enable-static --enable-shared --enable-far --enable-ngram-fsts --enable-python

# Now set up environment variables. This makes heavy use of distutils.sysconfig, # which has changed over time. I haven't extensively tested versions other than python3.6.

export PYTHON=$(which python3) export PYTHON_CPPFLAGS=$(python3 -c 'import distutils.sysconfig as sc; print("-I"+sc.get_python_inc(), "-I"+sc.get_python_inc(plat_specific=1))')
export PYTHON_LDFLAGS=$(python3 -c 'import distutils.sysconfig as sc; print("-L"+sc.get_config_var("LIBPL"), sc.get_config_var("BLDLIBRARY"))') export PYTHON_SITE_PKG=$(python3 -c 'import distutils.sysconfig as sc; print(sc.get_python_lib())')
export PYTHON_VERSION=$(python3 -c 'import sys; print(sys.version.split()[0])') export pyexecdir=$(pwd)/install/lib/python$PYTHON_VERSION/site-packages export pythondir=$pyexecdir

# Compile openfst. -e means that environment variables will override # variables in the Makefiles. -j10 means run 10 parallel jobs.

make -e -j10
make -e install

# Since the above installs python module in non-standard location, you need to tell python where to find it.

export PYTHONPATH=$(pwd)/install/lib/python$PYTHON_VERSION/site-packages

# Test that it finds everything.

python3
import pywrapfst



<--/commentPlugin-->

## How recover state mapping after ShortestPath?

#### Revision 462019-02-12 - RyanRaynold

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Amazon workmail to office 365 migration

### RyanRaynold - 2019-02-12 - 11:47

Today I would like to introduce Amazon WorkMail to office 365 converter tool. This managed email and calendaring solution runs in the Cloud. It offers a unique set of security controls and works and efficiently convert amazon workmail to office 365. here’s also a browser-based interface). If your organization already has a directory of its own, WorkMail can make use of it via the recently introduced AWS Directory Service. If not, WorkMail will use Directory Service to create a directory for you as part of the setup process. this tool is most safe and secure tool which secure your data during migration. this tool is with some amazing feature which is efficient to convert amazon workmail to office 365 without any hassle. you should try this tool because All users both technical or non technical can easily access this tool without any technical knowledge because no technical knowledge required for this tool in fact basic computer knowledge is enough to access this tool. you should try this tool without any hesitation because this tool is develop as well option for you. i assure you that this tool is best option for you because this can convert aws to office 365 instantly without any hassle.

<--/commentPlugin-->

## Migrating amazon workmail to office 365

### RyanRaynold - 2019-02-12 - 11:44

This amazon workmmail to office 365 converter Software is fully authorized to migrate Amazon WorkMail to Office 365 because it has the separate option for completing the task by asking account credentials so it is also known as Amazon WorkMail to Office 365 converter Software. This tool is capable to transfer all email messages without any size limitation. it is fully automated software which does not require any manual step to completing the task. this tool allow the users to Migration of all mailbox data, including emails, appointments, and contacts and It has Automatic and manual CSV based source and destination addition. This tool can Supports all Office 365 plans and Exchange versions and this Export Amazon WorkMail to Office 365 is a reliable tool to migrate several Amazon WorkMail Mailboxes to Office 365 / Exchange Server Platform. All users both technical or non technical can easily access this tool without any technical knowledge because no technical knowledge required for this tool in fact basic computer knowledge is enough to access this tool. you should try this tool without any hesitation because this tool is develop as well option for you. i assure you that this tool is best option for you because this can convert aws to office 365 instantly without any hassle.

<--/commentPlugin-->

## ./configure fails on MacOS Mojave: could not determine ar interface

### NurL - 2019-02-08 - 22:00

#### Revision 452019-02-08 - NurL

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## ./configure fails on MacOS Mojave: could not determine ar interface

### NurL - 2019-02-08 - 22:00

When running ./configure on MacOS Mojave the configuration script exits with this error:

 checking for ar... ar checking the archiver (ar) interface... unknown configure: error: could not determine ar interface 

Something similar was already asked on SO but with no solution: https://stackoverflow.com/questions/47074736/autoconf-uses-wrong-ar-on-os-x

Anyone else ran into this?

<--/commentPlugin-->

## How to convert PST to amazon workmail

### LutherAnderson - 2019-02-07 - 09:52

#### Revision 442019-02-07 - LutherAnderson

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## How to convert PST to amazon workmail

### LutherAnderson - 2019-02-07 - 09:52

To import pst files in amazon without any data loss first you need best and brilliant third party tool which is this pst to amazon workmail converter tool that can easily and securely convert all data from pst to amazon workmail. So when you convert PST to AWS by using PST to amazon workmail Converter, your all problem will be solved. It will give you the desired result. You can download the free trail version of this software which Allow User to Import 10 items/ folder from PST to Amazon WorkMail in free demo version. All users both technical and non technical can easily use this tool without any technical skill because basic computer knowledge is enough for this tool.

Selective Import filters:- This Import PST to Amazon WorkMail tool allows you to filter out the PST file data with its selection options and filters. with this tool You can choose the folders you want to import. With Date Range filter, you can import items of a specific period. It also has options to exclude folders and choose from item type.

<--/commentPlugin-->

## How to export PST data to AWS

### LutherAnderson - 2019-02-07 - 09:51

Migrate PST data to amazon workmail format using PST to amazon mailbox converter Tool that easily converts all PST files to MBOX without MS Outlook. It Supports all PST supportive platform. The software supports all the versions of Windows OS. It comes up with many unique features such as drag and drops options, chooses destination location to save converted files, conversion in bulk, no files size limitations and many more. This Import PST to Amazon WorkMail tool has been very well designed with features that efficient to Import or migrate PST file to Amazon WorkMail. Use Free version to import PST/OST to Amazon WorkMail in just few Clicks. All users both technical and non technical can easily use this tool without any technical skill because basic computer knowledge is enough for this tool.

Note:- Chekout its free trial version which can scan & Allow User to Import 10 items/ folder from PST to Amazon WorkMail in free demo version.

<--/commentPlugin-->

## Compilatoin problems CentOS

### EstherJudd - 2019-02-05 - 18:19

#### Revision 432019-02-05 - EstherJudd

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Compilatoin problems CentOS

### EstherJudd - 2019-02-05 - 18:19

CentOS gcc 4.8.5 export CXX="g++ -std=c++11"

openfst 1.7.1 ./configure --enable-compact-fsts --enable-const-fsts --enable-far --enable-lookahead-fsts --enable-pdt --enable-mpdt --enable-ngram-fsts --enable-python --prefix=/home/user/scripts

/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF $depbase.Tpo -c -o compat.lo compat.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF .deps/compat.Tpo -c compat.cc -fPIC -DPIC -o .libs/compat.o depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF$depbase.Tpo -c -o flags.lo flags.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF .deps/flags.Tpo -c flags.cc -fPIC -DPIC -o .libs/flags.o depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF $depbase.Tpo -c -o fst.lo fst.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF .deps/fst.Tpo -c fst.cc -fPIC -DPIC -o .libs/fst.o In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:389:53: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<float> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<float>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:395:54: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const TropicalWeightTpl<double> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::TropicalWeightTpl<double>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:573:48: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<float> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<float>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:579:49: error: redeclaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ differs in ‘constexpr’ const LogWeightTpl<double> &weight, size_t n) { ^ In file included from ./../include/fst/pair-weight.h:18:0, from ./../include/fst/expectation-weight.h:24, from ./../include/fst/arc.h:15, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/weight.h:204:8: error: from previous declaration ‘Weight fst::Power(const Weight&, size_t) [with Weight = fst::LogWeightTpl<double>; size_t = long unsigned int]’ Weight Power(const Weight &weight, size_t n) { ^ make[3]: * [fst.lo] Error 1 make[3]: Leaving directory /home/user/openfst-1.7.1/src/lib' make[2]: * [all-recursive] Error 1 make[2]: Leaving directory /home/user/openfst-1.7.1/src' make[1]: * [all-recursive] Error 1 make[1]: Leaving directory /home/user/openfst-1.7.1' make: * [all] Error 2 openfst 1.7.0 /bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF$depbase.Tpo -c -o compat.lo compat.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT compat.lo -MD -MP -MF .deps/compat.Tpo -c compat.cc -fPIC -DPIC -o .libs/compat.o depbase=echo flags.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF $depbase.Tpo -c -o flags.lo flags.cc &&mv -f$depbase.Tpo $depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT flags.lo -MD -MP -MF .deps/flags.Tpo -c flags.cc -fPIC -DPIC -o .libs/flags.o depbase=echo fst.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF$depbase.Tpo -c -o fst.lo fst.cc &&mv -f $depbase.Tpo$depbase.Plo libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT fst.lo -MD -MP -MF .deps/fst.Tpo -c fst.cc -fPIC -DPIC -o .libs/fst.o In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); ^ ./../include/fst/float-weight.h:229:50: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:229:1: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression make[3]: * [fst.lo] Error 1 make[3]: Leaving directory /home/user/openfst-1.7.0/src/lib' make[2]: * [all-recursive] Error 1 make[2]: Leaving directory /home/user/openfst-1.7.0/src' make[1]: * [all-recursive] Error 1 make[1]: Leaving directory /home/user/openfst-1.7.0' make: * [all] Error 2

openfst 1.6.9 compiles correctly, but then I run into the problem of compiling a compatible version of opengrm? Which version should work with it? I tried 1.3.3-5 and they all give this error:

/bin/sh ../../libtool --tag=CXX --mode=compile g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT ngram-context.lo -MD -MP -MF .deps/ngram-context.Tpo -c -o ngram-context.lo ngram-context.cc libtool: compile: g++ -std=c++11 -DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT ngram-context.lo -MD -MP -MF .deps/ngram-context.Tpo -c ngram-context.cc -fPIC -DPIC -o .libs/ngram-context.o ngram-context.cc: In static member function ‘static void ngram::NGramContext::ParseContextInterval(const string&, std::vector<int>*, std::vector<int>*)’: ngram-context.cc:128:3: error: ‘SplitString’ is not a member of ‘fst’ fst::SplitString(line, ":", &contexts, true); ^ ngram-context.cc:131:3: error: ‘SplitString’ is not a member of ‘fst’ fst::SplitString(contexts[0], " ", &labels1, true); ^ ngram-context.cc:132:3: error: ‘SplitString’ is not a member of ‘fst’ fst::SplitString(contexts[1], " ", &labels2, true); ^ ngram-context.cc: In static member function ‘static void ngram::NGramExtendedContext::ParseContextIntervals(const string&, int, std::vector<ngram::NGramContext>*)’: ngram-context.cc:234:3: error: ‘SplitString’ is not a member of ‘fst’ fst::SplitString(line.get(), ",", &context_patterns, true); ^ make[3]: * [ngram-context.lo] Error 1 make[3]: Leaving directory /home/user/opengrm-ngram-1.3.5/src/lib' make[2]: * [all-recursive] Error 1 make[2]: Leaving directory /home/user/opengrm-ngram-1.3.5/src' make[1]: * [all-recursive] Error 1 make[1]: Leaving directory /home/user/opengrm-ngram-1.3.5' make: * [all] Error 2

<--/commentPlugin-->

### PeterTaylor - 2019-01-16 - 11:01

#### Revision 422019-01-16 - PeterTaylor

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

### PeterTaylor - 2019-01-16 - 11:01

For repair and restore quickbooks files You should try this third party QuickBooks Repair which is an efficient tool that can compatible to all Windows versions. i have been using this tool for very long time and i assure you that All the damaged QBW files are recovered with this QuickBooks Repair utility. In addition, this software also recovers previous business data and information and transactions of vendors, customers, company and staff most efficiently. All the transactions of the company are recovered in original currencies. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. you should try this brilliant tool without any hesitation and this can Supports Windows 10, 8, 7, Vista, XP, Server 2003 & 2000. all users can easily use this brilliant tool without any technical knowledge. you should use this brilliant tool.

<--/commentPlugin-->

## How to recover lost data from Auto data recovery

### PeterTaylor - 2019-01-16 - 10:59

You should use this quickbooks file recovery tool for repair and restore quickbooks files. This third party QuickBooks Recovery is strategically designed software to repair and recover damaged or corrupt QuickBooks QBW files and get you all the important accounting and financial information back. this tool can Supports Enterprise Solutions 9.0, 8.0 and 7.0, and efficiently recovers all the QuickBooks objects like Customers List, Vendor List, Employee List, Item List, Customer Type List, Payment Method List, Shipping Method List, Payment Terms List, Budget, Timer List, Class List, Sales Rep List, Sales Tax Code List, Price Level List, Job Type List and Chart of Accounts. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. all users can use this tool without any technical skill. you should try this brilliant tool for recover you quickbooks files without any hesitation.

<--/commentPlugin-->

## Excel repair tool to repair corrupt Excel workbook

### MarkDay - 2019-01-11 - 12:44

#### Revision 412019-01-14 - DewaldDeJager

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 299 to 299
@KyleGorman Unfortunately not really. I could pull a patched version of float-weight.h but for security reasons it would be best if I could pull the patch from the OpenFst website and verify it with the checksums.
>
>

### DewaldDeJager - 2019-01-14 - 11:59

@MartinJansche @KyleGorman Any news? Is there any public facing Git repo with the source? I'm even willing to make the patch myself. All I've found is an outdated mirror on Martin's GitHub profile.

On a side note, is there anything that can be done to stop these annoying spam forum posts? Perhaps a CAPTCHA step during registration?

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 402019-01-11 - MarkDay

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 20 to 20

>
>

## Excel repair tool to repair corrupt Excel workbook

### MarkDay - 2019-01-11 - 12:44

If your excel files get corrupted and when you open this, its show unsupported error files which was very important for you. if you want to repair your excel files then use this very Useful third party Tool for repair and recover your damage, corrupted/error excel file. this Excel recovery tool quickly repair and recovered the corrupted and damage/error excel file. using this wonderful recover tool that nicely works to repair, recover all versions from 2000 to 2016 and 2019 that includes 2000, 2003, 2007, 2010, 2013, etc. Best Solution for excel recovery tool damaged and corrupted excel data. all user can easily use this tool without any technical skill. you should try this brilliant and effective third party tool.

<--/commentPlugin-->

## Recovery for excel,recover,restore corrupted Excel

### MarkDay - 2019-01-11 - 12:42

Use This Wonderful and brilliant excel recover tool for your excel corrupted data. This is a third party software which is an effective & reliable tool which provides perfect solution to recover damaged excel file. This tool can recovers & restore all damaged/corrupted excel files. It supports all versions of MS excel and restores excels files in your location. It helps to preview of all damaged or corrupted excel files before restoration. Free availability of demo edition help you to easily understand application and the complete procedure of recovery. all users access this tool without any technical skill. you should try this brilliant and effective tool without any hesitation.

<--/commentPlugin-->

## How to recover deleted Quickbooks files

### JohnLowe - 2019-01-08 - 11:48

#### Revision 392019-01-10 - DewaldDeJager

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 267 to 267
I suppose we could bump the version, but isn't there any way to patch "downstream" in the meantime?
>
>

### DewaldDeJager - 2019-01-10 - 06:28

@KyleGorman Unfortunately not really. I could pull a patched version of float-weight.h but for security reasons it would be best if I could pull the patch from the OpenFst website and verify it with the checksums.

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 382019-01-08 - JohnLowe

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 18 to 18

 Subject (Edit - Preview) Comment (Edit - Preview)
>
>

## How to recover deleted Quickbooks files

### JohnLowe - 2019-01-08 - 11:48

Use this brilliant and effective QuickBooks Repair tool is an efficient and reliable tool to repair damaged or corrupt QBW files and recover all the data in it. this is a third party tool and This software is capable to recover each and every bit of data that is relevant to Services, Customers, Employees and Vendors in QBW files. all type of users both technical and non technical can easily use this tool without any technical support because no technical skill required for this brilliant tool. this tool can Support QuickBooks 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, and 2007 versions. you should try this brilliant tool without any hesitation and this can Supports Windows 10, 8, 7, Vista, XP, Server 2003 & 2000. you should try this brilliant tool because this is best for your bussiness.

<--/commentPlugin-->

## Non-constant assertion for static assertion

### AaronChantrill - 2018-12-28 - 17:45

#### Revision 372019-01-07 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 248 to 248
@MartinJansche @KyleGorman Any update on the compilation errors?
>
>

### KyleGorman - 2019-01-07 - 19:55

I suppose we could bump the version, but isn't there any way to patch "downstream" in the meantime?

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 362019-01-07 - DewaldDeJager

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 243 to 243
Thank you for the help =)
>
>

### DewaldDeJager - 2019-01-07 - 06:30

@MartinJansche @KyleGorman Any update on the compilation errors?

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 352019-01-04 - DewaldDeJager

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 230 to 230
After some further investigation, I've filed the following bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88683
>
>

### DewaldDeJager - 2019-01-04 - 05:47

Thanks for getting back to me, Martin!

I have tried with different versions of GCC and can reproduce the issue on GCC 8.2.1, 7.4.0, 6.5.0 and 5.5.0. Basically, I have not been able to compile it with any of the versions I have tried. Which compiler are you using?

To make it easier to test different versions of the compiler, I have created a Dockerfile for the project. The file along with usage instructions can be found here: https://gist.github.com/DewaldDeJager/ef2a5845866f8008d6540b7dd72eb4cd

I am the maintainer of OpenFst on the Arch User Repository and the packaging script downloads OpenFst directly from the website to the user's computer. As such, it is impractical for me to remove the static asserts from the source code before the code gets compiled on the user's computer.

Thank you for the help =)

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 342019-01-03 - MartinJansche

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 225 to 225
With the static_assert's present, the best working hypothesis is that there is some misunderstanding or disagreement about which expressions are in fact constexpr in C++11. Your compilation fails for static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"), which involves the expanded subexpression (+QNaNf >= -3.40282347e+38f) which the compiler considers to not be a constant expression. Either way, that's a problem. If the compiler is right, that's most definitely a problem; if the compiler is wrong, it still requires a workaround.
>
>

### MartinJansche - 2019-01-03 - 22:17

After some further investigation, I've filed the following bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88683

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 332019-01-03 - MartinJansche

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 216 to 216
The formatting is just much nicer than on the forum.
>
>

### MartinJansche - 2019-01-03 - 17:20

As Kyle mentioned above, you can simply comment out or remove the static_assert lines in float-weight.h. That should be entirely harmless, and we'll most likely (re)move those lines very soon.

With the static_assert's present, the best working hypothesis is that there is some misunderstanding or disagreement about which expressions are in fact constexpr in C++11. Your compilation fails for static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"), which involves the expanded subexpression (+QNaNf >= -3.40282347e+38f) which the compiler considers to not be a constant expression. Either way, that's a problem. If the compiler is right, that's most definitely a problem; if the compiler is wrong, it still requires a workaround.

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 322019-01-03 - DewaldDeJager

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 83 to 83
to get the compiler version and information about the standard library.
>
>

### DewaldDeJager - 2019-01-03 - 13:15

I am facing the same issue. My output for the above commands (From MartinJansche) is as follows:

[dearvolt@vostro openfst]$g++ --version g++ (GCC) 8.2.1 20181127 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [dearvolt@vostro openfst]$ echo "#include <cstddef>" | g++ -E -x c++ -std=c++11 -v - 2>&1 Using built-in specs. COLLECT_GCC=g++ Target: x86_64-pc-linux-gnu Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp --enable-cet=auto Thread model: posix gcc version 8.2.1 20181127 (GCC) COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/cc1plus -E -quiet -v -D_GNU_SOURCE - -mtune=generic -march=x86-64 -std=c++11 ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1 /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/x86_64-pc-linux-gnu /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../include/c++/8.2.1/backward /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include /usr/local/include /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include-fixed /usr/include End of search list. # 1 "<stdin>" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "<stdin>" # 1 "/usr/include/c++/8.2.1/cstddef" 1 3 # 42 "/usr/include/c++/8.2.1/cstddef" 3

# 43 "/usr/include/c++/8.2.1/cstddef" 3

# 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 1 3 # 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3

# 236 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 namespace std { typedef long unsigned int size_t; typedef long int ptrdiff_t;

typedef decltype(nullptr) nullptr_t;

} # 258 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 namespace std { inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } } namespace __gnu_cxx { inline namespace cxx11 __attribute__((__abi_tag ("cxx11"))) { } } # 508 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 # 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3 # 39 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 3 # 1 "/usr/include/features.h" 1 3 4 # 428 "/usr/include/features.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 442 "/usr/include/sys/cdefs.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 443 "/usr/include/sys/cdefs.h" 2 3 4 # 1 "/usr/include/bits/long-double.h" 1 3 4 # 444 "/usr/include/sys/cdefs.h" 2 3 4 # 429 "/usr/include/features.h" 2 3 4 # 452 "/usr/include/features.h" 3 4 # 1 "/usr/include/gnu/stubs.h" 1 3 4 # 10 "/usr/include/gnu/stubs.h" 3 4 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4 # 11 "/usr/include/gnu/stubs.h" 2 3 4 # 453 "/usr/include/features.h" 2 3 4 # 40 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3 # 509 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3

# 1 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3 # 512 "/usr/include/c++/8.2.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 # 50 "/usr/include/c++/8.2.1/cstddef" 2 3 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 1 3 4 # 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef long int ptrdiff_t; # 216 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef long unsigned int size_t; # 426 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 typedef struct { long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); # 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include/stddef.h" 3 4 } max_align_t;

typedef decltype(nullptr) nullptr_t; # 51 "/usr/include/c++/8.2.1/cstddef" 2 3

namespace std {

using ::max_align_t; } # 1 "<stdin>" 2 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-E' '-std=c++11' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'

### DewaldDeJager - 2019-01-03 - 13:19

The compiler error as well as the output for the above to commands on my system can be found here: https://gist.github.com/DewaldDeJager/96d6236d289fe906a2624c6a747ff8ea

The formatting is just much nicer than on the forum.

<--/commentPlugin-->

## Unknown FST type "vector" (arc type = "standard")

#### Revision 312019-01-02 - MartinJansche

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 72 to 72
You can just comment out those lines in float-weight.h if they're missing. The C++11 spec says all the pieces ought to be available, so your compiler is probably non-conformant.
>
>

### MartinJansche - 2019-01-02 - 21:22

Aaron, could you tell us what compiler and C++ library you are using? If $CXX refers to your c++ compiler, you could run$CXX --version

echo "#include <cstddef>" | $CXX -E -x c++ -std=c++11 -v - 2>&1 to get the compiler version and information about the standard library. <--/commentPlugin--> Log In ## Unknown FST type "vector" (arc type = "standard") #### Revision 302018-12-29 - KyleGorman Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 15 to 15 If you want to post some code, surround it with <verbatim> and </verbatim> tags. Auto-linking of WikiWords is now disabled in comments, so you can type VectorFst and it won't result in a broken link. You now need to use <br> to force new lines in your comment (unless inside verbatim tags). However, a blank line will automatically create a new paragraph. Deleted: < <  Subject (Edit - Preview) Comment (Edit - Preview) Log In Added: > >  Subject (Edit - Preview) Comment (Edit - Preview) Log In ## Non-constant assertion for static assertion ### AaronChantrill - 2018-12-28 - 17:45 Line: 21 to 20 ## Non-constant assertion for static assertion ### AaronChantrill - 2018-12-28 - 17:45 Added: > > Changed: < < I'm trying to build OpenFST 1.7.0 for use on a Raspberry Pi. I'm using the following configure: > > I'm trying to build OpenFST 1.7.0 for use on a Raspberry Pi. I'm using the following configure: ./configure --enable-static --enable-shared --enable-far --enable-lookahead-fsts --enable-const-fsts --enable-pdt --enable-ngram-fsts --enable-linear-fsts --prefix=/usr Line: 32 to 32 from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion Changed: < < static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); > > static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); ^~~~~~~~~~~~~ Changed: < < ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); > > ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ Changed: < < Makefile:460: recipe for target 'fst.lo' failed > > Makefile:460: recipe for target 'fst.lo' failed Changed: < < At first I thought this was an architecture issue, but when I tried building on an x86_32 and my primary x86_64 system I got the exact same issue. I've searched the internet and read through the INSTALL, README and NEWS, but don't see anything specifically addressing this. Do I need to be passing an additional argument to the compiler? > > At first I thought this was an architecture issue, but when I tried building on an x86_32 and my primary x86_64 system I got the exact same issue. I've searched the internet and read through the INSTALL, README and NEWS, but don't see anything specifically addressing this. Do I need to be passing an additional argument to the compiler? Thanks! Line: 45 to 45 Thanks! Deleted: < < ### AaronChantrill - 2018-12-28 - 17:53 Added: > > Changed: < < Additional: I guess I can't edit a post after submitting it. > > Additional: I guess I can't edit a post after submitting it. Changed: < < The error occurs during "make" not during configure. > > The error occurs during "make" not during configure. Changed: < < <verbatim> > > <verbatim> In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion Changed: < < static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); > > static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); ^~~~~~~~~~~~~ Changed: < < ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); > > ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ Changed: < < Makefile:460: recipe for target 'fst.lo' failed </verbatim> > > Makefile:460: recipe for target 'fst.lo' failed </verbatim> Deleted: < < <--/commentPlugin--> Log In Added: > > ### KyleGorman - 2018-12-29 - 19:30 Deleted: < < ## Unknown FST type "vector" (arc type = "standard") ### BruceLin - 2018-12-25 - 01:43 Changed: < < when I run fstarcsort --sort_type=olabel my_in.fst > my_out.fst, I got the the following error MutableFst::Read: Unknown FST type "vector" (arc type = "standard") My environment is cygwin and openfst-1.6.7. I can fix where i got wrong, can some one help? > > You can just comment out those lines in float-weight.h if they're missing. The C++11 spec says all the pieces ought to be available, so your compiler is probably non-conformant. Deleted: < < <--/commentPlugin--> Log In Added: > > ## Unknown FST type "vector" (arc type = "standard") ### BruceLin - 2018-12-25 - 01:43 Deleted: < < ## make money online ### SamAmaar - 2018-12-24 - 14:35 Changed: < < https://www.dleell.com > > when I run fstarcsort --sort_type=olabel my_in.fst > my_out.fst, I got the the following error Changed: < < <--/commentPlugin--> Log In > > MutableFst::Read: Unknown FST type "vector" (arc type = "standard") Added: > > My environment is cygwin and openfst-1.6.7. I can fix where i got wrong, can some one help? Added: > > <--/commentPlugin--> Log In ## pair weights in weight ### AliiiiRezaaa - 2018-11-04 - 08:08 Line: 109 to 103 but it error: fstcompile fst.txt Changed: < < FATAL: FstCompiler: Bad weight = "0,20,51", source = index.1.txt, line = 1 > > FATAL: FstCompiler: Bad weight = "0,20,51", source = index.1.txt, line = 1 ERROR: FstHeader::Read: Bad FST header: standard input best regards Line: 127 to 121 0 6 818 0 0,150,209 0 7 0 0 -2.2998,57,239 Deleted: < < <--/commentPlugin--> Log In Added: > > ### KyleGorman - 2018-12-29 - 19:33 This looks like you want to use triple weights, not just pairs. The whole process is documented here: http://www.openfst.org/twiki/bin/view/FST/FstAdvancedUsage#NewArcs Added: > > You need to be ready to write C++ and to follow the examples of how other weight/arc types are created and registered, of course. <--/commentPlugin--> Log In ## ComposeFst Memory Allocation ### DaniloDeOliveira - 2018-08-24 - 16:04 Line: 136 to 139 Hi, I’m trying to manage the memory usage of a ComposeFst object for a lazy decoder. I monitor the size of the vector of known states in VectorCacheStore, as well as the composition state table, both not garbage collected, with the following methods: Changed: < < *Vector of known states:*<br> <verbatim>size_t GetExtraAllocBytes() { return state_vec_.size() * sizeof(State *) ; }</verbatim> *State table:*<br> <verbatim>size_t GetStateTableSize(){ return GetStateTable()->Size()*sizeof(StateTuple) ; }</verbatim> > > *Vector of known states:*<br> <verbatim>size_t GetExtraAllocBytes() { return state_vec_.size() * sizeof(State *) ; }</verbatim> *State table:*<br> <verbatim>size_t GetStateTableSize(){ return GetStateTable()->Size()*sizeof(StateTuple) ; }</verbatim> I use the sum of the output of these two methods along with the garbage collector limit in order to estimate the total memory allocated by ComposeFst and be able to re-initialize the ComposeFst object periodically. However, when I monitor memory usage via the top command, it doesn’t match this estimation, it says I’m using more memory than that. Am I missing anything? Line: 161 to 165 Last time, when I was deploying OpenFst library in my project I did a checksum for download due to a insecure connection. Now, when I wanted to deploy project again, checksum is different. Is it possible that content of library was changed after it was made available for download? Last time when I downloaded library, current version was 1.6.8 and I copied sha256checksum from website (ba5a36662635eb68c202c0133d6137575342a5d507c2875fb0c859c5f199ead9), now sha256checksum is: af3f69ad3e32363e3a8c0e5953396ed35ee3130a0f27264b005879aeefd43236 Deleted: < < ### KyleGorman - 2018-08-25 - 18:57 Added: > > Changed: < < I don't know, but can you just use the more recent one that's up? > > I don't know, but can you just use the more recent one that's up? <--/commentPlugin--> Log In Changed: < < ## Implementing FST composition with "slop" > > ## Implementing FST composition with "slop" ### PiotrZelasko - 2018-06-29 - 11:40 Added: > > Hi there! Line: 175 to 178 Hi there! Changed: < < Is there an option to perform FST composition with OpenFST which would allow some kind of "slop" parameter, similarly as in ElasticSearch (see the first example in attached link)? If not, what do you think would be the best approach to implement it? I'm thinking about lookahead matchers but perhaps there is a simpler way. > > Is there an option to perform FST composition with OpenFST which would allow some kind of "slop" parameter, similarly as in ElasticSearch (see the first example in attached link)? If not, what do you think would be the best approach to implement it? I'm thinking about lookahead matchers but perhaps there is a simpler way. Reference: https://www.elastic.co/guide/en/elasticsearch/guide/current/slop.html Line: 180 to 183 Reference: https://www.elastic.co/guide/en/elasticsearch/guide/current/slop.html Deleted: < < ### KyleGorman - 2018-07-12 - 00:09 Added: > > Changed: < < I don't know how "slop" is implemented there but an obvious implementation of fuzzy matching with FSTs is described under FstExamples (see the section entitled "Edit Distance"). Here's an implementation using our Python wrappers: > > I don't know how "slop" is implemented there but an obvious implementation of fuzzy matching with FSTs is described under FstExamples (see the section entitled "Edit Distance"). Here's an implementation using our Python wrappers: https://github.com/kylebgorman/EditTransducer Changed: < < That allows you to match between two strings of possibly infinite distance apart. If you only want to consider something a match when it's up to k characters (symbols) away, then there's an easier approach and it's in fact much faster at runtime: instead of composing with a cyclic edit transducer, you compose with a transducer that allows zero or one edits, and compose that with itself up to k times. > > That allows you to match between two strings of possibly infinite distance apart. If you only want to consider something a match when it's up to k characters (symbols) away, then there's an easier approach and it's in fact much faster at runtime: instead of composing with a cyclic edit transducer, you compose with a transducer that allows zero or one edits, and compose that with itself up to k times. <--/commentPlugin--> Log In Line: 200 to 202 The code in script/fst-class.cc checks if the returned reader function pointer is null, but for an unknown arc_type the returned pointer is to the NullReader function, which returns a null pointer when called. Changed: < < The binary's main function then just exits without invoking the FSTERROR(). > > The binary's main function then just exits without invoking the FSTERROR(). Deleted: < < ### KyleGorman - 2018-06-13 - 20:49 Added: > > Thanks, fixed. Line: 227 to 227 Hi, Changed: < < I've tried hard over the last days to compile openfst 1.6.7 on Cygwin and managed to get it to compile and link without error. However, when I try to use the command line tools, no 'PROGRAM FLAGS' are accessible. Here's (part of) the output from e.g. fstcompile: > > I've tried hard over the last days to compile openfst 1.6.7 on Cygwin and managed to get it to compile and link without error. However, when I try to use the command line tools, no 'PROGRAM FLAGS' are accessible. Here's (part of) the output from e.g. fstcompile: fstcompile --help Creates binary FSTs from simple text format. Line: 243 to 243 show usage information --helpshort: type = bool, default = false show brief usage information Changed: < < --tmpdir: type = string, default = "/tmp" > > --tmpdir: type = string, default = "/tmp" temporary directory --v: type = int32, default = 0 verbosity level Line: 255 to 255 Enable garbage collection of cache --fst_default_cache_gc_limit: type = int64, default = 1048576 Cache byte size that triggers garbage collection Changed: < < --fst_read_mode: type = string, default = "read" > > --fst_read_mode: type = string, default = "read" Default file reading mode for mappable files --fst_verify_properties: type = bool, default = false Verify FST properties queried by TestProperties Changed: < < --save_relabel_ipairs: type = string, default = "" > > --save_relabel_ipairs: type = string, default = "" Save input relabel pairs to file Changed: < < --save_relabel_opairs: type = string, default = "" > > --save_relabel_opairs: type = string, default = "" Save output relabel pairs to file [...] PROGRAM FLAGS are empty, preventing me to hand e.g. a symbol table to the binary. Interestingly, all flags that come from the library (fst.cc, symbol_table.cc, util.cc and weight.cc) are there. Changed: < < Any help would be appreciated, I tried a lot already but can't make sense of it. > > Any help would be appreciated, I tried a lot already but can't make sense of it. Thanks, Line: 282 to 281 From some preliminary debugging it seems that the registers which hold the flags change. For example if Changed: < < auto bool_register = FlagRegister<bool>::GetRegister(); > > auto bool_register = FlagRegister<bool>::GetRegister(); Changed: < < returns the bool FlagRegister at address X in fstcompile.cc, it also returns X in fstcompile-main.cc, but as soon as 'ShowUsage' in flags.cc is called the same command returns a different address Y. > > returns the bool FlagRegister at address X in fstcompile.cc, it also returns X in fstcompile-main.cc, but as soon as 'ShowUsage' in flags.cc is called the same command returns a different address Y. So it seems the flags specific for fstcompile for example are put in a different register than the library flags and are never retrieved again. Line: 311 to 310 The constants fst::kNoStateId and fst::kNoLabel, for instance, are both -1, and negative values should be treated as implementational details. Changed: < < But the entire library is templated on a definition of arc so if you don't like this you could always write your own arc template like so: > > But the entire library is templated on a definition of arc so if you don't like this you could always write your own arc template like so: Changed: < < template <class Weight> > > template <class Weight> struct PreciseArcTpl { ssize_t ilabel; ssize_t olabel; Line: 336 to 334 But when I try to use the LogProbArcSelector, e.g. Changed: < < <verbatim> int seed = rand() % 57 ; // std::cout << "Rand: " << seed << std::endl; fst::LogProbArcSelector<fst::StdArc> selector(seed); fst::RandGenOptions< fst::LogProbArcSelector<fst::StdArc> > options(selector); > > <verbatim> int seed = rand() % 57 ; // std::cout << "Rand: " << seed << std::endl; fst::LogProbArcSelector<fst::StdArc> selector(seed); fst::RandGenOptions< fst::LogProbArcSelector<fst::StdArc> > options(selector); fst::RandGen(fst, &random_path, options); Changed: < < </verbatim> > > </verbatim> then it compiles and runs, but the results are not as expected. (I expect to get weighted-random results, biased by the relative weights of the paths in the FST.) Changed: < < 1. Am I thinking correctly about the LogProbArcSelector and what it's supposed to do? > > 1. Am I thinking correctly about the LogProbArcSelector and what it's supposed to do? 2. Am I using it correctly? Does it work with StdArc FSTs? 3. Are there useful examples anywhere that I could study? Line: 351 to 349 3. Are there useful examples anywhere that I could study? Deleted: < < ### KennethRBeesley - 2018-04-26 - 17:10 Added: > > Changed: < < I see that <verbatim>...</verbatim> didn't work very well. Here's another try with Markdown > > I see that <verbatim>...</verbatim> didn't work very well. Here's another try with Markdown I have an FST with StdArc (Tropical Semiring). Using RandGen() with the default UniformArcSelector, I seem to get uniformly random results, as expected. But when I try to use the LogProbArcSelector, e.g.  Changed: < < int seed = rand() % 57 ; // std::cout << "Rand: " << seed << std::endl; fst::LogProbArcSelector<fst::StdArc> selector(seed); fst::RandGenOptions< fst::LogProbArcSelector<fst::StdArc> > options(selector); > > int seed = rand() % 57 ; // std::cout << "Rand: " << seed << std::endl; fst::LogProbArcSelector<fst::StdArc> selector(seed); fst::RandGenOptions< fst::LogProbArcSelector<fst::StdArc> > options(selector); fst::RandGen(fst, &random_path, options);  then it compiles and runs, but the results are not as expected. (I expect to get weighted-random results, biased by the relative weights of the paths in the FST.)  Changed: < < 1. Am I thinking correctly about the LogProbArcSelector and what it's supposed to do? > > 1. Am I thinking correctly about the LogProbArcSelector and what it's supposed to do? 2. Am I using it correctly? Does it work with StdArc FSTs? 3. Are there useful examples anywhere that I could study?  Line: 376 to 374 <--/commentPlugin--> Log In Deleted: < < ## building 1.6.7 problem ### AlexanderRudnicky - 2018-03-20 - 10:50 Added: > > Changed: < < I am getting the following error when I 'make' the project: > > I am getting the following error when I 'make' the project: Changed: < < <verbatim> > > <verbatim> fst.cc:86:34: required from here Changed: < < ./../include/fst/util.h:202:3: error: unable to deduce 'const auto&' from '<expression error>' > > ./../include/fst/util.h:202:3: error: unable to deduce 'const auto&' from '<expression error>' make[3]: * [fst.lo] Error 1 Changed: < < </verbatim> > > </verbatim> Changed: < < I'm doing a vanilla build, with the following: <verbatim> > > I'm doing a vanilla build, with the following: <verbatim> wget http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.6.7.tar.gz ./configure CXX=g++47 --enable-static --enable-shared --enable-far --enable-ngram-fsts Changed: < < [also-->] ./configure CXX=g++47 > > [also-->] ./configure CXX=g++47 make -j 4 Changed: < < [also-->] make </verbatim> > > [also-->] make </verbatim> The machine has: Changed: < < <verbatim> > > <verbatim>$cat /etc/*elease CentOS release 6.2 (Final) $g++47 -dumpversion 4.7.0 Changed: < < </verbatim> > > </verbatim> Changed: < < I would want to assume that the distribution should have compiled w/o problem. I'm not a C++ person, so I'm not even sure what the error is about. > > I would want to assume that the distribution should have compiled w/o problem. I'm not a C++ person, so I'm not even sure what the error is about. Any ideas on what to try next? Thanks! Line: 411 to 408 Deleted: < < ### AlexanderRudnicky - 2018-03-20 - 11:01 Added: > > Changed: < < hmm. The markup instructions above aren't clear. here's the error again: <verbatim> > > hmm. The markup instructions above aren't clear. here's the error again: <verbatim> fst.cc:86:34: required from here Changed: < < = ./../include/fst/util.h:202:3: error: unable to deduce 'const auto&' from '<expression error>'= > > = ./../include/fst/util.h:202:3: error: unable to deduce 'const auto&' from '<expression error>'= = make[3]: * [fst.lo] Error 1 = Changed: < < </verbatim> > > </verbatim> ### KyleGorman - 2018-03-26 - 13:20 Line: 423 to 420 ### KyleGorman - 2018-03-26 - 13:20 Added: > > Changed: < < I haven't seen that before. I understand what it's saying (it's saying that some type deduction is failing on that line in util.h) but not why your compiler can't do type deduction there. Is it possible to upgrade your GCC beyond 4.7.0 (either by upgrading a package or your OS)? That version of GCC is 6 years old, which is a long time in C++ terms. > > I haven't seen that before. I understand what it's saying (it's saying that some type deduction is failing on that line in util.h) but not why your compiler can't do type deduction there. Is it possible to upgrade your GCC beyond 4.7.0 (either by upgrading a package or your OS)? That version of GCC is 6 years old, which is a long time in C++ terms. ## Successful cross-compilation of OpenFST, OpenGRM NGram and OpenGRM Thrax using MinGW Line: 496 to 497 I am trying to use Pynini in an NLP course for teaching FSTs. I find it great but I am a bit confused by the destructive operations in the Pynini API. Changed: < < Let's say I have the following FSTs (inspired by Jason Eisner's homework at https://www.cs.jhu.edu/~jason/465/hw-ofst/hw-ofst.pdf): > > Let's say I have the following FSTs (inspired by Jason Eisner's homework at https://www.cs.jhu.edu/~jason/465/hw-ofst/hw-ofst.pdf): import pynini as pn Changed: < < zero = pn.a("0") one = pn.a("1") > > zero = pn.a("0") one = pn.a("1") bit = zero | one first = (zero + one + one + one + one.ques).optimize() Changed: < < Now, a good way to rewrite 'first' seems to be something like: > > Now, a good way to rewrite 'first' seems to be something like: first = (zero + one.closure(3,4)).optimize() Changed: < < However, after executing this, 'one' is not any more /1/ but /1{3,4}/. I find this unintuitive. OK, I can use the copy method: > > However, after executing this, 'one' is not any more /1/ but /1{3,4}/. I find this unintuitive. OK, I can use the copy method: first = (zero + one.copy().closure(3,4)).optimize() Line: 530 to 530 This just calls copy under the hood, of course. Changed: < < BTW calling copy is not itself expensive. The major data classes in this library use reference-counting, copy-on-write semantics. The only time a deep copy happens is when you mutate something with a reference count > 1. > > BTW calling copy is not itself expensive. The major data classes in this library use reference-counting, copy-on-write semantics. The only time a deep copy happens is when you mutate something with a reference count > 1. <--/commentPlugin--> Log In Line: 534 to 534 <--/commentPlugin--> Log In Deleted: < < ## find N unique ShortestPaths for StdVectorFst using c++ ### VarunKumar - 2018-02-15 - 09:48 Added: > > Changed: < < I am trying to find N unique shortest paths for a given StdVectorFst. What should be the value of "weight_threshold" for StdVectorFst in ShortestPathOptions? > > I am trying to find N unique shortest paths for a given StdVectorFst. What should be the value of "weight_threshold" for StdVectorFst in ShortestPathOptions? Changed: < < fst::StdVectorFst* input = fst::StdVectorFst::Read(""); > > fst::StdVectorFst* input = fst::StdVectorFst::Read(""); fst::StdVectorFst result; //shortest path options Line: 561 to 558 <--/commentPlugin--> Log In Deleted: < < ## weight type conversion in fst ### IkeYuki - 2017-12-10 - 23:08 Added: > > Changed: < < Is there a method to convert fst's weight? I want to get VectorFst<LogArc> from VectorFst<StdArc> such as HCLG.fst. > > Is there a method to convert fst's weight? I want to get VectorFst<LogArc> from VectorFst<StdArc> such as HCLG.fst. Deleted: < < ### IkeYuki - 2017-12-15 - 07:19 Added: > > I tried to use Arcmap, but an error occured. Changed: < < <verbatim> fst::MutableFst<fst::LogArc> *fst; fst::ArcMap<fst::LogArc,fst::WeightConvertMapper<fst::StdArc,fst::LogArc>>(*fst,fst::WeightConvertMapper<fst::StdArc,fst::LogArc>()); </verbatim> > > <verbatim> fst::MutableFst<fst::LogArc> *fst; fst::ArcMap<fst::LogArc,fst::WeightConvertMapper<fst::StdArc,fst::LogArc>>(*fst,fst::WeightConvertMapper<fst::StdArc,fst::LogArc>()); </verbatim> Changed: < < <verbatim> > > <verbatim> No matching function for call to Changed: < < ArcMap(fst::MutableFst<fst::ArcTpl<fst::LogWeightTpl<float> > >&, fst::WeightConvertMapper<fst::ArcTpl<fst::TropicalWeightTpl<float> >, fst::ArcTpl<fst::LogWeightTpl<float> > >)' </verbatim> > > ArcMap(fst::MutableFst<fst::ArcTpl<fst::LogWeightTpl<float> > >&, fst::WeightConvertMapper<fst::ArcTpl<fst::TropicalWeightTpl<float> >, fst::ArcTpl<fst::LogWeightTpl<float> > >)' </verbatim> Any ideas for this? Thanks for advance. Line: 586 to 582 Any ideas for this? Thanks for advance. Deleted: < < ### KyleGorman - 2018-01-16 - 16:48 Deleted: < < Hi! Yes, such methods exist at several levels. At the template library level, try something like (these aren't tested but should work, with at most minor changes): Added: > > Hi! Yes, such methods exist at several levels. At the template library level, try something like (these aren't tested but should work, with at most minor changes):  fst::VectorFst<StdArc> std_fst; // Populates this... fst::VectorFst<LogArc> log_fst; Changed: < < fst::ArcMap(std_fst, &log_fst, fst::StdToLogMapper()); > > fst::ArcMap(std_fst, &log_fst, fst::StdToLogMapper()); Or, you can use the binary interface: Deleted: < < Changed: < < fstmap --map_type=to_log std.fst log.fst > > fstmap --map_type=to_log std.fst log.fst Or, from Python: Deleted: < < Changed: < < log_fst = pywrapfst.arcmap(std_fst, map_type="to_log") > > log_fst = pywrapfst.arcmap(std_fst, map_type="to_log") <--/commentPlugin--> Log In Line: 622 to 613 The first FST contains the set of all strings as shown here http://www.openfst.org/twiki/bin/view/Forum/FstForum#Making_an_FST_with_C_How_to_defi Changed: < < The second SearchFST contains a single string (i.e. State1 -> a/x -> State2 -> b/y -> FinalState) > > The second SearchFST contains a single string (i.e. State1 -> a/x -> State2 -> b/y -> FinalState) The input and output symbol tables for both FST are the same. Line: 648 to 638 <--/commentPlugin--> Log In Deleted: < < ## Get raw arc arrays from VectorFst or ArcIterator. ### JustinLuitjens - 2017-11-09 - 16:45 Added: > > Changed: < < Is there a method to get the raw arc arrays from either an Fst or an ArcIter? I'd like to be able to parallelism across an ArcIterator loop but to do that I need a way to get each arc in constant time. > > Is there a method to get the raw arc arrays from either an Fst or an ArcIter? I'd like to be able to parallelism across an ArcIterator loop but to do that I need a way to get each arc in constant time. Deleted: < < ### KyleGorman - 2017-11-21 - 11:53 Added: > > Changed: < < There's no guarantee that an FST type will have a precomputed arc array, so I'd just do something like: > > There's no guarantee that an FST type will have a precomputed arc array, so I'd just do something like: Changed: < < std::vector<Arc> arcs; for (ArcIterator<Fst<Arc>> aiter(fst, state); aiter.Done(); aiter.Next()) { > > std::vector<Arc> arcs; for (ArcIterator<Fst<Arc>> aiter(fst, state); aiter.Done(); aiter.Next()) { arcs.push_back(aiter.Value()); } Line: 670 to 659 <--/commentPlugin--> Log In Deleted: < < ## Error in fstconvert in openfst-1.6.5 ### EricWang - 2017-11-06 - 07:14 Added: > > Hi, Changed: < < I have tried to run "./tools/openfst/openfst-1.6.5/bin/fstconvert --fst_type=olabel_lookahead --save_relabel_opairs=tmp.1 tmp.111> tmp.222" > > I have tried to run "./tools/openfst/openfst-1.6.5/bin/fstconvert --fst_type=olabel_lookahead --save_relabel_opairs=tmp.1 tmp.111> tmp.222" I got a error info as follows: ERROR: GenericRegister::GetEntry: lookup failed in shared object: olabel_lookahead-fst.so FATAL: Fst::Convert: Unknown FST type olabel_lookahead (arc type log) Changed: < < But If I run above command using fstconvert in openfst-1.1.2.10, It is ok! I guess there some wrong in compiling fstconvert in openfst-1.6.5, but I don't know how to fix it. Could anyone give some helps? Thanks! > > But If I run above command using fstconvert in openfst-1.1.2.10, It is ok! I guess there some wrong in compiling fstconvert in openfst-1.6.5, but I don't know how to fix it. Could anyone give some helps? Thanks! Eric Line: 687 to 675 Deleted: < < ### KyleGorman - 2017-11-21 - 11:55 Added: > > Changed: < < You need to make sure you build lookahead FST SOs during compilation (--enable-lookahead-fsts) and that the generated SOs are in your LD_LIBRARY_PATH, or fstconvert won't be able to find them. > > You need to make sure you build lookahead FST SOs during compilation (--enable-lookahead-fsts) and that the generated SOs are in your LD_LIBRARY_PATH, or fstconvert won't be able to find them. Changed: < < (1.1.2 is truly ancient---can't help you with why this would have worked 9 years ago.) > > (1.1.2 is truly ancient---can't help you with why this would have worked 9 years ago.) <--/commentPlugin--> Log In Line: 703 to 690 Hello, Changed: < < I think there is a small bug in pywrapfst, the parameter allow_nondet seems not to be transferred to the underlying c-call. If openfst's development were organized on github, I'd sent in a pull request. Here is a diff that I think shows the bug, however, I can't get it working as I don't understand the build process. There is a pywrap.cc file that even has a "CYTHON_UNUSED" or something in a relevant place, but how the file is built is beyond my grasp. Maybe someone can have a look at this, that would be great. > > I think there is a small bug in pywrapfst, the parameter allow_nondet seems not to be transferred to the underlying c-call. If openfst's development were organized on github, I'd sent in a pull request. Added: > > Here is a diff that I think shows the bug, however, I can't get it working as I don't understand the build process. There is a pywrap.cc file that even has a "CYTHON_UNUSED" or something in a relevant place, but how the file is built is beyond my grasp. Maybe someone can have a look at this, that would be great. Cheers, Line: 718 to 704 * 2019,2025 ** Returns: self. Changed: < < """ > > """ ! self._minimize(delta) return self Line: 726 to 712 2019,2025 ---- Returns: self. Changed: < < """ > > """ ! self._minimize(delta, allow_nondet) return self Line: 734 to 720 Deleted: < < ### KyleGorman - 2017-11-03 - 15:35 Added: > > Changed: < < Thanks, we'll fix that on our side. (A PR wouldn't be helpful because OpenFst's source is generated programmatically from proprietary code we develop within Google and I can't think of any serious alternative to that workflow that'd work for us.) > > Thanks, we'll fix that on our side. (A PR wouldn't be helpful because OpenFst's source is generated programmatically from proprietary code we develop within Google and I can't think of any serious alternative to that workflow that'd work for us.) Changed: < < pywrapfst.cc is generated by Cython from pywrapfst.pyx, and then can be compiled normally. (We just build straight from the .cc though. Thus building this doesn't require that you have a copy of Cython, unless you want to hack the .pyx first.) > > pywrapfst.cc is generated by Cython from pywrapfst.pyx, and then can be compiled normally. (We just build straight from the .cc though. Thus building this doesn't require that you have a copy of Cython, unless you want to hack the .pyx first.) ### DavidVanLeeuwen - 2017-11-04 - 07:02 Line: 748 to 735 I hack-fixed it for my own application now by changing a (bool)0 into a (bool)1 somewhere in the .cc. Changed: < < I couldn't get an explicit determinize to work, the toy example > > I couldn't get an explicit determinize to work, the toy example 0 1 a a 0 2 a a Line: 770 to 758 <--/commentPlugin--> Log In Deleted: < < ## python3 and configure ### PavelDenisov - 2017-10-28 - 15:22 Added: > > Changed: < < Running "./configure --enable-python" with python3 produces following error: > > Running "./configure --enable-python" with python3 produces following error: Changed: < < <verbatim> checking for a Python interpreter with version >= 2.7... python > > <verbatim> checking for a Python interpreter with version >= 2.7... python checking for python... /usr/bin/python checking for python version... 3.5 checking for python platform... linux checking for python script directory...${prefix}/lib64/python3.5/site-packages checking for python extension module directory... ${exec_prefix}/lib64/python3.5/site-packages checking for python3.5... (cached) /usr/bin/python Changed: < < checking for a version of Python >= '2.1.0'... File "<string>", line 1 import sys, string; ver = string.split(sys.version)[0]; print ver >= '2.1.0' > > checking for a version of Python >= '2.1.0'... File "<string>", line 1 import sys, string; ver = string.split(sys.version)[0]; print ver >= '2.1.0' ^ SyntaxError: invalid syntax Changed: < < </verbatim> > > </verbatim> It looks like python stuff in the configure script is not designed to work with python3. I would like to try to port it. Are there any reasons for not doing this? Line: 794 to 781 It looks like python stuff in the configure script is not designed to work with python3. I would like to try to port it. Are there any reasons for not doing this? Deleted: < < ### KyleGorman - 2017-11-03 - 15:32 Added: > > Changed: < < That error is coming from Python invoked by the autoconf macro, looks like. So we can fix that but maybe it's better to fix it upstream there. > > That error is coming from Python invoked by the autoconf macro, looks like. So we can fix that but maybe it's better to fix it upstream there. Changed: < < Before submitting you may want to test Python 3 with the Python extension. We still develop on Python 2.7, exclusively, unfortunately, and it's not tested on Python 3. > > Before submitting you may want to test Python 3 with the Python extension. We still develop on Python 2.7, exclusively, unfortunately, and it's not tested on Python 3. ### PavelDenisov - 2017-11-04 - 12:25 Line: 803 to 790 ### PavelDenisov - 2017-11-04 - 12:25 Added: > > Changed: < < OK, thank you. I'll keep that in mind. > > OK, thank you. I'll keep that in mind. ### ChristopherKermorvant - 2017-11-07 - 05:38 Line: 819 to 809 I was able to overcome the configure problem by taking ax_python_devel.m4 from fresh autoconf-archive distribution. Changed: < < However other things must be taken care of before pywrapfst can be used with python3. At the moment I'm getting such error: > > However other things must be taken care of before pywrapfst can be used with python3. At the moment I'm getting such error: Changed: < < <verbatim> > > <verbatim> Changed: < < pywrapfst.cc: In function 'void __Pyx_CppExn2PyErr()': > > pywrapfst.cc: In function 'void __Pyx_CppExn2PyErr()': pywrapfst.cc:2448:7: error: exception handling disabled, use -fexceptions to enable throw; ^~~~~ Changed: < < pywrapfst.cc:2450:40: error: 'exn' was not declared in this scope > > pywrapfst.cc:2450:40: error: 'exn' was not declared in this scope PyErr_SetString(PyExc_MemoryError, exn.what()); Changed: < < </verbatim> > > </verbatim> ### NurL - 2018-03-14 - 09:27 Line: 839 to 830 <--/commentPlugin--> Log In Deleted: < < ## How recover state mapping after ShortestPath? ### JeffToprak - 2017-09-17 - 12:41 Added: > > I have the problem that I am extracting the shortest path of an FST via ShortestPath. However, the resulting FST has entirely new state IDs, and I would like have a map between the old state IDs and the new IDs (I have auxiliary information on the origin state IDs I want to carry over). Changed: < < How would I go about that? I guess I could try to "look up" the shortest path by recursively iterating through the original FST, matching ilabel/olabels , but is there a better way? > > How would I go about that? I guess I could try to "look up" the shortest path by recursively iterating through the original FST, matching ilabel/olabels , but is there a better way? ### MichaelRiley - 2017-09-22 - 15:25 Line: 852 to 843 Assuming your FST is an FSA you could: Changed: < < 1. make it an FST whose output label encoded the state/arc ID info OR 2. You can intersect the FST with the input but pass the state table as an option first in IntersectFstOptions. > > 1. make it an FST whose output label encoded the state/arc ID info OR 2. You can intersect the FST with the input but pass the state table as an option first in IntersectFstOptions. The state table stores the mapping to and from the input state pairs and the output state. Would be nice if Compose/IntersectFst offered GetStateTable() but issues with getting the right type of the return. Line: 867 to 857 Hi, Changed: < < I'm having a bit of difficulty obtaining the API documentation for the Python wrapper of Openfst. I would like to use some more advanced methods such as epsilon removal and determinization, but am unsure as to how to call them. > > I'm having a bit of difficulty obtaining the API documentation for the Python wrapper of Openfst. I would like to use some more advanced methods such as epsilon removal and determinization, but am unsure as to how to call them. Any help would be greatly appreciated. Thanks! Line: 873 to 863 Deleted: < < ### KyleGorman - 2017-10-12 - 17:25 Added: > > Changed: < < Like most Python packages, they're documented extensively within. E.g.: > > Like most Python packages, they're documented extensively within. E.g.: Changed: < < >>> import pywrapfst > > >>> import pywrapfst Changed: < < >>> help(pywrapfst.determinize) > > >>> help(pywrapfst.determinize) determinize(...) Changed: < < determinize(ifst, delta=0.0009765625, det_type="functional", > > determinize(ifst, delta=0.0009765625, det_type="functional", nstate=NO_STATE_ID, subsequential_label=0, weight=None, incremental_subsequential_label=False) Line: 895 to 885 epsilon transitions are treated as regular symbols (cf. rmepsilon). Args: Changed: < < ifst The input FST. delta Comparison/quantization delta. det_type Type of determinization; one of: "functional" (input transducer is functional), "nonfunctional" (input transducer is not functional) and disambiguate" (input transducer is not functional but only keep the min > > ifst The input FST. delta Comparison/quantization delta. det_type Type of determinization; one of: "functional" (input transducer is functional), "nonfunctional" (input transducer is not functional) and disambiguate" (input transducer is not functional but only keep the min of ambiguous outputs). Changed: < < nstate State number threshold. subsequential_label Input label of arc corresponding to residual final > > nstate State number threshold. subsequential_label Input label of arc corresponding to residual final output when producing a subsequential transducer. Changed: < < weight A Weight or weight string indicating the desired weight threshold > > weight A Weight or weight string indicating the desired weight threshold below which paths are pruned; if omitted, no paths are pruned. Changed: < < increment_subsequential_label Increment subsequential when creating > > increment_subsequential_label Increment subsequential when creating several arcs for the residual final output at a given state. Returns: An equivalent deterministic FST. Raises: Changed: < < FstArgError Unknown determinization type. > > FstArgError Unknown determinization type. See also: disambiguate, rmepsilon. Line: 929 to 918 I am trying to use the python wrapper for openfst. I have tried both methods below, and cannot get either to work: Changed: < < 1. I configure using the configuration flag 'enable-python', run 'make' and then 'make install'. Running 'import pywrapfst' in Python gives me 'No module named pywrapfst'. > > 1. I configure using the configuration flag 'enable-python', run 'make' and then 'make install'. Running 'import pywrapfst' in Python gives me 'No module named pywrapfst'. Changed: < < 2. I run 'pip install openfst'. Running 'import pywrapfst' in Python gives me: 'ImportError: libfstfarscript.so.8: cannot open shared object file: No such file or directory' > > 2. I run 'pip install openfst'. Running 'import pywrapfst' in Python gives me: 'ImportError: libfstfarscript.so.8: cannot open shared object file: No such file or directory' Changed: < < I can't find anyone with the same issue: some help or ideas of how to troubleshoot would be deeply appreciated. > > I can't find anyone with the same issue: some help or ideas of how to troubleshoot would be deeply appreciated. Thanks in advance! Peter Line: 946 to 935 ### KyleGorman - 2017-09-11 - 10:09 Added: > > Changed: < < If make install with enable-python ran, then there is somewhere a pywrapfst.so on your system. Find it, and make sure it's in your Python path (sys.path from within Python) for whatever Python installation you're using. (Many people have multiple installations of Python on their system.) You can do this by adjusting your Python path or moving pywrapfst.so into the existing path. > > If make install with enable-python ran, then there is somewhere a pywrapfst.so on your system. Find it, and make sure it's in your Python path (sys.path from within Python) for whatever Python installation you're using. (Many people have multiple installations of Python on their system.) You can do this by adjusting your Python path or moving pywrapfst.so into the existing path. Changed: < < Using pip for this doesn't make much sense, and that's out of date anyways. > > Using pip for this doesn't make much sense, and that's out of date anyways. <--/commentPlugin--> Log In Changed: < < ## how to implement an on the fly fst replacement？ > > ## how to implement an on the fly fst replacement？ ### XingW - 2017-09-07 - 23:39 Added: > > Changed: < < Dear all， I'm a newbie of openfst，nowadays I want to implement an on the fly fst replacement, could anyone teach me something about how to achieve the on the fly function in openfst? > > Dear all， I'm a newbie of openfst，nowadays I want to implement an on the fly fst replacement, could anyone teach me something about how to achieve the on the fly function in openfst? Thanks very much in advance! Line: 975 to 965 ### KyleGorman - 2017-09-11 - 10:06 Added: > > Changed: < < "on-the-fly" here means something similar to "lazy" in the sense of "lazy evaluation". It computes the FST corresponding to the RTN "as needed" by other operations; optionally, it stores recently visited states in the computation in a in-memory cache of size specified by the user. This is useful when the corresponding FST is large or only a small portion of it will be visited by subsequent operations. > > "on-the-fly" here means something similar to "lazy" in the sense of "lazy evaluation". It computes the FST corresponding to the RTN "as needed" by other operations; optionally, it stores recently visited states in the computation in a in-memory cache of size specified by the user. This is useful when the corresponding FST is large or only a small portion of it will be visited by subsequent operations. Changed: < < You can't use lazy computation from the command-line, so fstreplace isn't really doing on-the-fly computation in any relevant sense. The only way to take advantage of lazy computation is through the lowest-level C++ API. > > You can't use lazy computation from the command-line, so fstreplace isn't really doing on-the-fly computation in any relevant sense. The only way to take advantage of lazy computation is through the lowest-level C++ API. <--/commentPlugin--> Log In Line: 1028 to 1018 checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes Changed: < < checking whether the shell understands "+="... yes > > checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no Changed: < < checking how to associate runtime and link libraries... printf %s\n > > checking how to associate runtime and link libraries... printf %s\n checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib Line: 1082 to 1072 checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate Changed: < < checking for a Python interpreter with version >= 2.7... python > > checking for a Python interpreter with version >= 2.7... python checking for python... /var/local/miniconda2/bin/python checking for python version... 2.7 checking for python platform... linux2 checking for python script directory...${prefix}/lib/python2.7/site-packages checking for python extension module directory... ${exec_prefix}/lib/python2.7/site-packages checking for python2.7... (cached) /var/local/miniconda2/bin/python Changed: < < checking for a version of Python >= '2.1.0'... yes checking for a version of Python >= '2.7'... yes > > checking for a version of Python >= '2.1.0'... yes checking for a version of Python >= '2.7'... yes checking for the distutils Python package... yes checking for Python include path... -I/var/local/miniconda2/include/python2.7 checking for Python library path... -L/var/local/miniconda2/lib/python2.7 -lpython2.7 Line: 1127 to 1117 config.status: executing depfiles commands config.status: executing libtool commands Deleted: < < make gave some warnings eg: Changed: < < ./../../include/fst/string.h:207:59: warning: 'TokenType' is deprecated: Use fst::StringTokenType [-Wdeprecated-declarations] > > ./../../include/fst/string.h:207:59: warning: 'TokenType' is deprecated: Use fst::StringTokenType [-Wdeprecated-declarations] const SymbolTable *syms = nullptr) Then checks fails root@tiger21 openfst-1.6.3# make check Making check in src Changed: < < make[1]: Entering directory /tmp/openfst-1.6.3/src' > > make[1]: Entering directory /tmp/openfst-1.6.3/src' Making check in include Changed: < < make[2]: Entering directory /tmp/openfst-1.6.3/src/include' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/include' > > make[2]: Entering directory /tmp/openfst-1.6.3/src/include' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/include' Making check in lib Changed: < < make[2]: Entering directory /tmp/openfst-1.6.3/src/lib' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/lib' > > make[2]: Entering directory /tmp/openfst-1.6.3/src/lib' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/lib' Making check in script Changed: < < make[2]: Entering directory /tmp/openfst-1.6.3/src/script' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/script' > > make[2]: Entering directory /tmp/openfst-1.6.3/src/script' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/script' Making check in bin Changed: < < make[2]: Entering directory /tmp/openfst-1.6.3/src/bin' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/bin' > > make[2]: Entering directory /tmp/openfst-1.6.3/src/bin' make[2]: Nothing to be done for check'. make[2]: Leaving directory /tmp/openfst-1.6.3/src/bin' Making check in test Changed: < < make[2]: Entering directory /tmp/openfst-1.6.3/src/test' > > make[2]: Entering directory /tmp/openfst-1.6.3/src/test' make fst_test weight_test algo_test_log algo_test_tropical algo_test_minmax algo_test_lexicographic algo_test_power Changed: < < make[3]: Entering directory /tmp/openfst-1.6.3/src/test' make[3]: fst_test' is up to date. make[3]: weight_test' is up to date. make[3]: algo_test_log' is up to date. make[3]: algo_test_tropical' is up to date. make[3]: algo_test_minmax' is up to date. make[3]: algo_test_lexicographic' is up to date. make[3]: algo_test_power' is up to date. make[3]: Leaving directory /tmp/openfst-1.6.3/src/test' > > make[3]: Entering directory /tmp/openfst-1.6.3/src/test' make[3]: fst_test' is up to date. make[3]: weight_test' is up to date. make[3]: algo_test_log' is up to date. make[3]: algo_test_tropical' is up to date. make[3]: algo_test_minmax' is up to date. make[3]: algo_test_lexicographic' is up to date. make[3]: algo_test_power' is up to date. make[3]: Leaving directory /tmp/openfst-1.6.3/src/test' make check-TESTS Changed: < < make[3]: Entering directory /tmp/openfst-1.6.3/src/test' make[4]: Entering directory /tmp/openfst-1.6.3/src/test' > > make[3]: Entering directory /tmp/openfst-1.6.3/src/test' make[4]: Entering directory /tmp/openfst-1.6.3/src/test' FAIL: fst_test FAIL: weight_test FAIL: algo_test_log Line: 1175 to 1164 FAIL: algo_test_minmax FAIL: algo_test_lexicographic FAIL: algo_test_power Changed: < < make[5]: Entering directory /tmp/openfst-1.6.3/src/test' make[5]: Nothing to be done for all'. make[5]: Leaving directory /tmp/openfst-1.6.3/src/test' > > make[5]: Entering directory /tmp/openfst-1.6.3/src/test' make[5]: Nothing to be done for all'. make[5]: Leaving directory /tmp/openfst-1.6.3/src/test' ======================================================================== Testsuite summary for OpenFst 1.6.3 ======================================================================== Line: 1193 to 1182 Please report to help@www.openfst.org ======================================================================== make[4]: * [test-suite.log] Error 1 Changed: < < make[4]: Leaving directory /tmp/openfst-1.6.3/src/test' > > make[4]: Leaving directory /tmp/openfst-1.6.3/src/test' make[3]: * [check-TESTS] Error 2 Changed: < < make[3]: Leaving directory /tmp/openfst-1.6.3/src/test' > > make[3]: Leaving directory /tmp/openfst-1.6.3/src/test' make[2]: * [check-am] Error 2 Changed: < < make[2]: Leaving directory /tmp/openfst-1.6.3/src/test' > > make[2]: Leaving directory /tmp/openfst-1.6.3/src/test' make[1]: * [check-recursive] Error 1 Changed: < < make[1]: Leaving directory /tmp/openfst-1.6.3/src' > > make[1]: Leaving directory /tmp/openfst-1.6.3/src' make: * [check-recursive] Error 1 root@tiger21 openfst-1.6.3# Line: 1209 to 1198 That warning is harmless. Changed: < < No clue about the errors in the tests. Can you run them manually and catch the first error they raise? (They're just executables.) > > No clue about the errors in the tests. Can you run them manually and catch the first error they raise? (They're just executables.) ### KyleGorman - 2017-09-11 - 10:23 Line: 1213 to 1202 ### KyleGorman - 2017-09-11 - 10:23 Added: > > Changed: < < BTW, the last I checked, pyfst doesn't support any version of OpenFst released in the last few years anyways, so you should check on their documentation for the supported version. > > BTW, the last I checked, pyfst doesn't support any version of OpenFst released in the last few years anyways, so you should check on their documentation for the supported version. <--/commentPlugin--> Log In Line: 1218 to 1208 <--/commentPlugin--> Log In Deleted: < < ## Pre-initialized composition ### AhnK - 2017-08-31 - 22:07 Added: > > Hi, Changed: < < The paper "Pre-initialized Composition for Large-Vocabulary Speech Recognition (Cyril Allauzen, et al, 2013)" mentioned the pre-initialized composition was implemented in the OpenFst toolkit. How can I use this feature? I can't find any explicit explanations on this. > > The paper "Pre-initialized Composition for Large-Vocabulary Speech Recognition (Cyril Allauzen, et al, 2013)" mentioned the pre-initialized composition was implemented in the OpenFst toolkit. How can I use this feature? I can't find any explicit explanations on this. Deleted: < < ### AlexandreCaulier - 2017-12-20 - 11:46 Added: > > Changed: < < Hello! I'm interested as well. Any idea where it is implemented ? > > Hello! I'm interested as well. Any idea where it is implemented ? ### KyleGorman - 2018-05-24 - 01:33 Line: 1234 to 1223 ### KyleGorman - 2018-05-24 - 01:33 Added: > > Changed: < < "Implemented in OpenFst" in this case doesn't mean it's part of OpenFst, just that it was built on top of OpenFst. I'm not aware of an OSS implementation. > > "Implemented in OpenFst" in this case doesn't mean it's part of OpenFst, just that it was built on top of OpenFst. I'm not aware of an OSS implementation. <--/commentPlugin--> Log In Line: 1248 to 1237 I am having a bit of trouble installing Pynini on a Mac OS X (El Capitan). I installed OpenFST and re2 from sources and I am using Anaconda python 2.7. When I run “sudo python setup.py install” everything goes smoothly. But when I run “python setup.py test” I keep getting this error: Changed: < < <verbatim> > > <verbatim> sudo python setup.py test running test running egg_info writing pynini.egg-info/PKG-INFO writing top-level names to pynini.egg-info/top_level.txt writing dependency_links to pynini.egg-info/dependency_links.txt Changed: < < reading manifest file 'pynini.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'pynini.egg-info/SOURCES.txt' > > reading manifest file 'pynini.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'pynini.egg-info/SOURCES.txt' running build_ext Changed: < < copying build/lib.macosx-10.6-x86_64-2.7/pywrapfst.so -> copying build/lib.macosx-10.6-x86_64-2.7/pynini.so -> > > copying build/lib.macosx-10.6-x86_64-2.7/pywrapfst.so -> copying build/lib.macosx-10.6-x86_64-2.7/pynini.so -> Traceback (most recent call last): Changed: < < File "setup.py", line 88, in <module> test_suite="pynini_test") File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/core.py", line 151, in setup > > File "setup.py", line 88, in <module> test_suite="pynini_test") File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/core.py", line 151, in setup dist.run_commands() Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/dist.py", line 953, in run_commands > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/dist.py", line 972, in run_command > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/site-packages/setuptools/command/test.py", line 172, in run > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/site-packages/setuptools/command/test.py", line 172, in run self.run_tests() Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/site-packages/setuptools/command/test.py", line 193, in run_tests > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/site-packages/setuptools/command/test.py", line 193, in run_tests testRunner=self._resolve_as_ep(self.test_runner), Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 94, in init > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 94, in init self.parseArgs(argv) Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 149, in parseArgs > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 149, in parseArgs self.createTests() Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 158, in createTests > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/main.py", line 158, in createTests self.module) Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] Changed: < < File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName module = __import__('.'.join(parts_copy)) File "/Users/kazantsevaa/Software/pynini-1.6/pynini_test.py", line 16, in <module> > > File "/Users/kazantsevaa/anaconda/envs/python2/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName module = __import__('.'.join(parts_copy)) File "/Users/kazantsevaa/Software/pynini-1.6/pynini_test.py", line 16, in <module> from pynini import * ImportError: dlopen(/Users/kazantsevaa/Software/pynini-1.6/pynini.so, 2): Symbol not found: __ZN3re23RE213GlobalReplaceEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS0_RKNS_11StringPieceE Referenced from: /Users/kazantsevaa/Software/pynini-1.6/pynini.so Expected in: flat namespace in /Users/kazantsevaa/Software/pynini-1.6/pynini.so Changed: < < </verbatim> > > </verbatim> Any ideas how to fix this? Has anyone else run into this? I reinstalled openFST and re2 but it does not go away. Line: 1309 to 1297 Want to install OpenFST 1.6.2. Ran ./configure, make, make check. I get this output. Please advice. Thanks. PS Kind of a newbie at this, pls be gentle Changed: < < <verbatim>fst_test.o: In function fst::internal::CompactFstImpl<fst::ArcTpl<fst::TropicalWeightTpl<float> >, fst::(anonymous namespace)::CustomCompactor<fst::ArcTpl<fst::TropicalWeightTpl<float> > >, unsigned short, fst::DefaultCompactStore<std::pair<int, fst::TropicalWeightTpl<float> >, unsigned short>, fst::DefaultCacheStore<fst::ArcTpl<fst::TropicalWeightTpl<float> > > >::Init(fst::Fst<fst::ArcTpl<fst::TropicalWeightTpl<float> > > const&, std::shared_ptr<fst::DefaultCompactStore<std::pair<int, fst::TropicalWeightTpl<float> >, unsigned short> >)': > > <verbatim>fst_test.o: In function fst::internal::CompactFstImpl<fst::ArcTpl<fst::TropicalWeightTpl<float> >, fst::(anonymous namespace)::CustomCompactor<fst::ArcTpl<fst::TropicalWeightTpl<float> > >, unsigned short, fst::DefaultCompactStore<std::pair<int, fst::TropicalWeightTpl<float> >, unsigned short>, fst::DefaultCacheStore<fst::ArcTpl<fst::TropicalWeightTpl<float> > > >::Init(fst::Fst<fst::ArcTpl<fst::TropicalWeightTpl<float> > > const&, std::shared_ptr<fst::DefaultCompactStore<std::pair<int, fst::TropicalWeightTpl<float> >, unsigned short> >)': fst_test.cc:(.text+0x3c35f): undefined reference to fst::Int64ToStr(long, std::string*) Changed: < < make[3]: Entering directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' > > make[3]: Entering directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' /bin/bash ../../libtool --tag=CXX --mode=link g++ -std=c++11 -o fst_test fst_test.o ../lib/libfst.la -lm -ldl libtool: link: g++ -std=c++11 -o .libs/fst_test fst_test.o ../lib/.libs/libfst.so -lm -ldl -Wl,-rpath -Wl,/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/lib Changed: < < Makefile:645: recipe for target 'fst_test' failed make[3]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' Makefile:1054: recipe for target 'check-am' failed make[2]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' Makefile:358: recipe for target 'check-recursive' failed make[1]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src' Makefile:414: recipe for target 'check-recursive' failed </verbatim> > > Makefile:645: recipe for target 'fst_test' failed make[3]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' Makefile:1054: recipe for target 'check-am' failed make[2]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src/test' Makefile:358: recipe for target 'check-recursive' failed make[1]: Leaving directory '/home/kkoenen/stt/kaldi-master/tools/openfst-1.6.2/src' Makefile:414: recipe for target 'check-recursive' failed </verbatim> Same problem with openfst-1.6.3. Line: 1327 to 1315 Same problem with openfst-1.6.3. Deleted: < < ### KyleGorman - 2017-08-17 - 17:06 Added: > > Changed: < < We can fix this on our side but you don't need to run "make check", just "sudo make install" should suffice. > > We can fix this on our side but you don't need to run "make check", just "sudo make install" should suffice. ### KyleGorman - 2017-08-18 - 15:03 Line: 1334 to 1322 ### KyleGorman - 2017-08-18 - 15:03 Added: > > Changed: < < Hi Kees, the error doesn't make a ton of sense to me. There is no function fst::Int64ToStr in OpenFst 1.6.3, as far as I can tell. > > Hi Kees, the error doesn't make a ton of sense to me. There is no function fst::Int64ToStr in OpenFst 1.6.3, as far as I can tell. You may want to try doing a clean install (i.e., go to where OpenFst headers and source are installed and remove them, then install again). Changed: < < You may want to try this outside of the Kaldi framework for installing OpenFst, since we don't maintain that, the Kaldi people do, and I don't know anything about it. > > You may want to try this outside of the Kaldi framework for installing OpenFst, since we don't maintain that, the Kaldi people do, and I don't know anything about it. <--/commentPlugin--> Log In Line: 1350 to 1338 Hi, I get an error linking when trying to compile using a cross-compiling toolchain: Changed: < < <pre> make[4]: Entering directory '/scratch/bplim/crossbuild2/tmp/openfst-1.6.3/src/extensions/far' > > <pre> make[4]: Entering directory '/scratch/bplim/crossbuild2/tmp/openfst-1.6.3/src/extensions/far' /bin/sh ../../../libtool --tag=CXX --mode=link armv8rpi3-novumind-linux-gnueabihf-g++ -std=c++11 -o farcompilestrings farcompilestrings.o libfstfarscript.la ../../script/libfstscript.la ../../lib/libfst.la -lm -ldl libtool: link: armv8rpi3-novumind-linux-gnueabihf-g++ -std=c++11 -o .libs/farcompilestrings farcompilestrings.o ./.libs/libfstfarscript.so ../../script/.libs/libfstscript.so ../../lib/.libs/libfst.so -lm -ldl -Wl,-rpath -Wl,/scratch/bplim/crossbuild2/tmp/build/rpi3/openfst/lib /home/share/crosstool/rpi3/lib/gcc/armv8rpi3-novumind-linux-gnueabihf/6.3.0/../../../../armv8rpi3-novumind-linux-gnueabihf/bin/ld: warning: libfstfar.so.8, needed by ./.libs/libfstfarscript.so, not found (try using -rpath or -rpath-link) Changed: < < ./.libs/libfstfarscript.so: undefined reference to fst::IsSTList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ./.libs/libfstfarscript.so: undefined reference to fst::IsSTTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' </pre> > > ./.libs/libfstfarscript.so: undefined reference to fst::IsSTList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ./.libs/libfstfarscript.so: undefined reference to fst::IsSTTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' </pre> Changed: < < I'm not sure if this is completely correct but this patch (followed by rerunning aclocal && automake && autoreconf) seems to fix it: > > I'm not sure if this is completely correct but this patch (followed by rerunning aclocal && automake && autoreconf) seems to fix it: Changed: < < <pre> > > <pre> openfst-1.6.3/src/extensions/far/Makefile.am 2017-06-27 13:12:19.000000000 -0700 +++ openfst-1.6.3/src/extensions/far/Makefile.new 2017-08-02 19:24:37.034355239 -0700 Line: 1374 to 1362 ../../lib/libfst.la -lm$(DL_LIBS)

farcompilestrings_SOURCES = farcompilestrings.cc

Changed:
<
<
</pre>
>
>
</pre>

Deleted:
<
<

### BoonPangLim - 2017-08-03 - 14:05

>
>
Update with cleaner versions:
Line: 1383 to 1371
Update with cleaner versions:

ERROR:

Changed:
<
<
<verbatim> make[4]: Entering directory '/scratch/bplim/crossbuild2/tmp/openfst-1.6.3/src/extensions/far'
>
>
<verbatim> make[4]: Entering directory '/scratch/bplim/crossbuild2/tmp/openfst-1.6.3/src/extensions/far'
/bin/sh ../../../libtool --tag=CXX --mode=link armv8rpi3-novumind-linux-gnueabihf-g++ -std=c++11 -o farcompilestrings farcompilestrings.o libfstfarscript.la ../../script/libfstscript.la ../../lib/libfst.la -lm -ldl libtool: link: armv8rpi3-novumind-linux-gnueabihf-g++ -std=c++11 -o .libs/farcompilestrings farcompilestrings.o ./.libs/libfstfarscript.so ../../script/.libs/libfstscript.so ../../lib/.libs/libfst.so -lm -ldl -Wl,-rpath -Wl,/scratch/bplim/crossbuild2/tmp/build/rpi3/openfst/lib /home/share/crosstool/rpi3/lib/gcc/armv8rpi3-novumind-linux-gnueabihf/6.3.0/../../../../armv8rpi3-novumind-linux-gnueabihf/bin/ld: warning: libfstfar.so.8, needed by ./.libs/libfstfarscript.so, not found (try using -rpath or -rpath-link)
Changed:
<
<
./.libs/libfstfarscript.so: undefined reference to fst::IsSTList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ./.libs/libfstfarscript.so: undefined reference to fst::IsSTTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
>
>
./.libs/libfstfarscript.so: undefined reference to fst::IsSTList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ./.libs/libfstfarscript.so: undefined reference to fst::IsSTTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
Changed:
<
<
</verbatim>
>
>
</verbatim>
PATCH:
Changed:
<
<
<verbatim>
>
>
<verbatim>

openfst-1.6.3/src/extensions/far/Makefile.am 2017-06-27 13:12:19.000000000 -0700 +++ openfst-1.6.3/src/extensions/far/Makefile.new 2017-08-02 19:24:37.034355239 -0700

Line: 1408 to 1396
../../lib/libfst.la -lm $(DL_LIBS) farcompilestrings_SOURCES = farcompilestrings.cc Changed: < < </verbatim> > > </verbatim> <--/commentPlugin--> Log In Line: 1414 to 1401 <--/commentPlugin--> Log In Deleted: < < ## Pre-determinization ### MarinaPetkovic - 2017-07-31 - 04:52 Added: > > Changed: < < Hi, I was wondering if there is an openfst implementation of an algorithm described in the paper "An Optimal Pre-Determinization Algorithm for Weighted Transducers" by Allauzen and Mohri? > > Hi, I was wondering if there is an openfst implementation of an algorithm described in the paper "An Optimal Pre-Determinization Algorithm for Weighted Transducers" by Allauzen and Mohri? Deleted: < < ### KyleGorman - 2017-08-14 - 13:47 Added: > > No sorry, but you could make your own? Line: 1431 to 1417 <--/commentPlugin--> Log In Changed: < < ## How to properly link my own program with openfst's libfst.so? > > ## How to properly link my own program with openfst's libfst.so? ### WeiyiZheng - 2017-07-26 - 19:31 Added: > > I encountered this problem when using fst/fst.h and libfst.so with my own c++ code. not sure what I did wrong, does anyone have a hint? Line: 1439 to 1424 I encountered this problem when using fst/fst.h and libfst.so with my own c++ code. not sure what I did wrong, does anyone have a hint? And this is the error Changed: < < <verbatim> > > <verbatim> E0726 16:23:20.319480 640899 generic-register.h:71] GenericRegister::GetEntry: vector-fst.so: cannot open shared object file: No such file or directory Changed: < < E0726 16:23:20.319733 640899 fst.h:246] Fst::Read: Unknown FST type vector (arc type = standard): <unspecified> </verbatim> > > E0726 16:23:20.319733 640899 fst.h:246] Fst::Read: Unknown FST type vector (arc type = standard): <unspecified> </verbatim> Line: 1447 to 1432 Deleted: < < ### JigarGada - 2017-08-02 - 20:31 Added: > > Changed: < < Can you try using <fst/fstlib.h> istead? > > Can you try using <fst/fstlib.h> istead? <--/commentPlugin--> Log In Line: 1454 to 1439 <--/commentPlugin--> Log In Deleted: < < ## How to static link openFST with -fPIC? ### AdamZahran - 2017-07-18 - 06:30 Added: > > Changed: < < Hi, I'd like to compile openFST to produce a static link that would later be linked into a shared library. So I need to compile it with the -fPIC flag, but automake is really confusing and I don't know what to edit to accomplish that. > > Hi, I'd like to compile openFST to produce a static link that would later be linked into a shared library. So I need to compile it with the -fPIC flag, but automake is really confusing and I don't know what to edit to accomplish that. Halp! Changed: < < BTW thank you for the amazing library <3 > > BTW thank you for the amazing library <3 <--/commentPlugin--> Log In Line: 1474 to 1457 I want to use sigma matcher and add it to isyms.txt. Is there a special integer reserved for all the matchers like we have 0 reserved for epsilon? Deleted: < < ### KyleGorman - 2017-07-24 - 12:01 Added: > > Changed: < < No, it just needs to not be 0 and to not overlap any other non-"special" labels. Sometimes I use 1, 2, 3 for phi, sigma, rho. sometimes I use -1, -2, -3 (though we don't do much testing for negative labels so bad things could happen). > > No, it just needs to not be 0 and to not overlap any other non-"special" labels. Sometimes I use 1, 2, 3 for phi, sigma, rho. sometimes I use -1, -2, -3 (though we don't do much testing for negative labels so bad things could happen). ### KyleGorman - 2017-07-24 - 12:01 Line: 1481 to 1464 ### KyleGorman - 2017-07-24 - 12:01 Added: > > Changed: < < BTW, if you're working with fstspecial, there are specific flags for setting the special labels for the different types of matchers (you also have to select the matcher to convert to). > > BTW, if you're working with fstspecial, there are specific flags for setting the special labels for the different types of matchers (you also have to select the matcher to convert to). ### JigarGada - 2017-08-02 - 20:29 Line: 1486 to 1470 ### JigarGada - 2017-08-02 - 20:29 Added: > > Changed: < < I selected the fst::RhoMatcher as the matcher type and it works with whatever label I provide for <rho>. Thanks Kyle > > I selected the fst::RhoMatcher as the matcher type and it works with whatever label I provide for <rho>. Thanks Kyle ### BillByrne - 2017-08-29 - 08:19 Line: 1494 to 1480 Hi, Can all this be done at the command line? I have a simple example with two acceptors: Changed: < < > fstprint --acceptor a.fst > > > fstprint --acceptor a.fst 0 1 1 1 Changed: < < > fstprint --acceptor b.fst > > > fstprint --acceptor b.fst 0 1 10 1 and I wish to use the 10 in b.fst as a sigma . I run fstspecial --sigma_fst_sigma_label=10 b.fst bs.fst  but then composition fstcompose a.fst bs.fst  fails. Am I missing a step? Do I need to set the matcher somehow? Line: 1512 to 1499 ### KyleGorman - 2017-09-08 - 11:27 Added: > > Changed: < < Here's the full story. fstspecial is statically linked against phi, rho, sigma FST SOs, for uninteresting reasons. All other OpenFst binaries (including fstcompose) will try to dynamically load the relevant SOs before reading the FSTs in. To work around that, you just need to set your LD_LIBRARY_PATH so that dlopen looks in the directory where the SOs are stored. For me that looks like: > > Here's the full story. fstspecial is statically linked against phi, rho, sigma FST SOs, for uninteresting reasons. All other OpenFst binaries (including fstcompose) will try to dynamically load the relevant SOs before reading the FSTs in. To work around that, you just need to set your LD_LIBRARY_PATH so that dlopen looks in the directory where the SOs are stored. For me that looks like: LD_LIBRARY_PATH=/usr/local/lib/fst Changed: < < Or you could use Shiran's library to make this all work in Python. I've added a link to it on the Contrib page. > > Or you could use Shiran's library to make this all work in Python. I've added a link to it on the Contrib page. <--/commentPlugin--> Log In Line: 1521 to 1509 <--/commentPlugin--> Log In Deleted: < < ## Pynini installation difficulties ### LeahVelleman - 2017-07-08 - 20:49 Added: > > Changed: < < I've successfully built and installed OpenFST. The cython commands listed here do not run successfully for me, giving the following errors: > > I've successfully built and installed OpenFST. The cython commands listed here do not run successfully for me, giving the following errors: Changed: < < > cython -3 --cplus -o pynini.cc pynini.pyx > > > cython -3 --cplus -o pynini.cc pynini.pyx Error compiling Cython file: Line: 1532 to 1519 Error compiling Cython file: Added: > > ... Changed: < < if self._mode == b"r": > > if self._mode = b"r": return self._reader.far_type() Changed: < < elif self._mode == b"w": > > elif self._mode = b"w": return self._writer.far_type() else: Changed: < < return "closed" > > return "closed" ^ pynini.pyx:2426:13: Unicode literals do not support coercion to C types other than Py_UNICODE/Py_UCS4 (for characters) or Py_UNICODE* (for strings). Changed: < < > cython -3 --cplus -o pywrapfst.cc pywrapfst.pyx > > > cython -3 --cplus -o pywrapfst.cc pywrapfst.pyx Error compiling Cython file: Line: 1554 to 1543 if ssymbols is not None: ssymbols_ptr = ssymbols._table cdef stringstream sstrm Changed: < < fst.PrintFst(deref(self._fst), sstrm, "<pywrapfst>", > > fst.PrintFst(deref(self._fst), sstrm, "<pywrapfst>", ^ Line: 1562 to 1551 If I attempt to install Pynini anyway, python setup.py install runs without errors or warnings, but then attempting to use the code (either by importing it in python or by running python setup.py test) gives this error: Changed: < < > python setup.py test > > > python setup.py test running test running egg_info writing pynini.egg-info/PKG-INFO writing dependency_links to pynini.egg-info/dependency_links.txt writing top-level names to pynini.egg-info/top_level.txt Changed: < < reading manifest file 'pynini.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'pynini.egg-info/SOURCES.txt' > > reading manifest file 'pynini.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'pynini.egg-info/SOURCES.txt' running build_ext Changed: < < copying build/lib.macosx-10.12-x86_64-3.6/pywrapfst.cpython-36m-darwin.so -> copying build/lib.macosx-10.12-x86_64-3.6/pynini.cpython-36m-darwin.so -> > > copying build/lib.macosx-10.12-x86_64-3.6/pywrapfst.cpython-36m-darwin.so -> copying build/lib.macosx-10.12-x86_64-3.6/pynini.cpython-36m-darwin.so -> pynini_test (unittest.loader._FailedTest) ... ERROR ================================================================== Line: 1579 to 1568 ================================================================== ERROR: pynini_test (unittest.loader._FailedTest) Added: > > ImportError: Failed to import test module: pynini_test Traceback (most recent call last): Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName > > File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName module = __import__(module_name) Changed: < < File "/Users/leahvelleman/Downloads/pynini-1.6/pynini_test.py", line 16, in <module> > > File "/Users/leahvelleman/Downloads/pynini-1.6/pynini_test.py", line 16, in <module> from pynini import * ImportError: dlopen(/Users/leahvelleman/Downloads/pynini-1.6/pynini.cpython-36m-darwin.so, 2): Symbol not found: __ZN3re23RE23Arg12parse_stringEPKcmPv Referenced from: /Users/leahvelleman/Downloads/pynini-1.6/pynini.cpython-36m-darwin.so Line: 1595 to 1585 Ran 1 test in 0.001s FAILED (errors=1) Changed: < < Test failed: <unittest.runner.TextTestResult run=1 errors=1 failures=0> error: Test failed: <unittest.runner.TextTestResult run=1 errors=1 failures=0> > > Test failed: <unittest.runner.TextTestResult run=1 errors=1 failures=0> error: Test failed: <unittest.runner.TextTestResult run=1 errors=1 failures=0> This is on MacOS 10.12.5, with XCode 8.3.3, and with python 3.6.1 and cython installed through macports. Line: 1601 to 1591 This is on MacOS 10.12.5, with XCode 8.3.3, and with python 3.6.1 and cython installed through macports. Deleted: < < ### LeahVelleman - 2017-07-08 - 21:18 Added: > > Changed: < < Update: replacing the relevant "..." strings in the relevant .pyx files with b"..." strings allows cython to run without error messages, but after doing this and reinstalling pynini, python setup.py test gives the same error as before. > > Update: replacing the relevant "..." strings in the relevant .pyx files with b"..." strings allows cython to run without error messages, but after doing this and reinstalling pynini, python setup.py test gives the same error as before. ### LeahVelleman - 2017-07-08 - 21:45 Line: 1612 to 1603 In fact, it looks like the cython errors and the conversion to python 3.6 is a red herring. When I do the whole process under python 2.7 (with the original, unmodified versions of those .pyx and .cc files) I get essentially the same error: Traceback (most recent call last): Changed: < < File "setup.py", line 88, in <module> test_suite="pynini_test") File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup > > File "setup.py", line 88, in <module> test_suite="pynini_test") File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup dist.run_commands() Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools/command/test.py", line 211, in run > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools/command/test.py", line 211, in run self.run_tests() Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools/command/test.py", line 234, in run_tests > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools/command/test.py", line 234, in run_tests **exit_kwarg Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 94, in init > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 94, in init self.parseArgs(argv) Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 149, in parseArgs > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 149, in parseArgs self.createTests() Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 158, in createTests > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 158, in createTests self.module) Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] Changed: < < File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName module = __import__('.'.join(parts_copy)) File "/Users/leahvelleman/Downloads/pynini-1.6/pynini_test.py", line 16, in <module> > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName module = __import__('.'.join(parts_copy)) File "/Users/leahvelleman/Downloads/pynini-1.6/pynini_test.py", line 16, in <module> from pynini import * ImportError: dlopen(/Users/leahvelleman/Downloads/pynini-1.6/pynini.so, 2): Symbol not found: __ZN3re23RE23Arg12parse_stringEPKcmPv Referenced from: /Users/leahvelleman/Downloads/pynini-1.6/pynini.so Line: 1647 to 1639 OK, got it sorted I think. The solution was to 1) Rebuild and reinstall re2 from source. Changed: < < 2) Switch a few "..." strings out for b"..." strings as described above. > > 2) Switch a few "..." strings out for b"..." strings as described above. 3) Run cython to regenerate the files as described in README.rst. 4) Install and test Pynini. Line: 1655 to 1647 ### KyleGorman - 2017-07-24 - 11:58 Added: > > Changed: < < Thanks Leah for the report there, I'll update the documentation for the next release. I wonder if I can simply eliminate all the "b"" literals and see if that works on both Python 2 and 3? (I love Python 3 but I develop mostly with 2.7 for ...employer reasons). > > Thanks Leah for the report there, I'll update the documentation for the next release. I wonder if I can simply eliminate all the "b"" literals and see if that works on both Python 2 and 3? (I love Python 3 but I develop mostly with 2.7 for ...employer reasons). ## Bad fst header error in fstcompose Line: 1661 to 1654 ## Bad fst header error in fstcompose ### NatashaNayga - 2017-06-23 - 17:04 Added: > > Changed: < < I have an fst file, but fstcompose doesn't like it. I made the fst file using fstinvert, but this returns a bad fst header error: ERROR: FstHeader::Read: Bad FST header: inverselexicon.fst<br> I currently have no experience with openfst, so any help would be appreciated.<br> > > I have an fst file, but fstcompose doesn't like it. I made the fst file using fstinvert, but this returns a bad fst header error: ERROR: FstHeader::Read: Bad FST header: inverselexicon.fst<br> I currently have no experience with openfst, so any help would be appreciated.<br> Thanks! Line: 1676 to 1670 ### MattHawthorn - 2018-01-26 - 03:02 Added: > > Changed: < < I'm getting the same error as @LeahVelleman on Mac OSX 10.12.6. I'm attempting to install pynini into an anaconda environment with python at version 3.6.4. > > I'm getting the same error as @LeahVelleman on Mac OSX 10.12.6. I'm attempting to install pynini into an anaconda environment with python at version 3.6.4. Changed: < < Of note is the fact that I'm using the Mac OSX-shipped c/c++ compilers to build re2: "Apple LLVM version 9.0.0 (clang-900.0.39.2)" and a homebrew-installed gcc/g++ to compile openfst: "gcc-7 (Homebrew GCC 7.3.0) 7.3.0" > > Of note is the fact that I'm using the Mac OSX-shipped c/c++ compilers to build re2: "Apple LLVM version 9.0.0 (clang-900.0.39.2)" and a homebrew-installed gcc/g++ to compile openfst: "gcc-7 (Homebrew GCC 7.3.0) 7.3.0" Changed: < < I don't know enough about C++ compilers to know if that's simply an irreconcilable error, but I do know that both of my compilers were inadequate by themselves to compile and successfully test both libraries - the standard lib headers of the Mac OS version were out of date for openfst (specifically 'type_traits' was missing), and while the newer g++ compiled re2, some of the dynamic tests failed to pass. This is all using make CC=gcc-7 CXX=g++-7 install/test/check > > I don't know enough about C++ compilers to know if that's simply an irreconcilable error, but I do know that both of my compilers were inadequate by themselves to compile and successfully test both libraries - the standard lib headers of the Mac OS version were out of date for openfst (specifically 'type_traits' was missing), and while the newer g++ compiled re2, some of the dynamic tests failed to pass. This is all using make CC=gcc-7 CXX=g++-7 install/test/check setup.py test produces this output: Line: 1690 to 1685 ================================================================== ERROR: pynini_test (unittest.loader._FailedTest) Added: > > ImportError: Failed to import test module: pynini_test Traceback (most recent call last): Changed: < < File "/Users/matthew_hawthorn/anaconda3/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName > > File "/Users/matthew_hawthorn/anaconda3/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName module = __import__(module_name) Changed: < < File "/Users/matthew_hawthorn/Desktop/src/pynini-1.8/pynini_test.py", line 15, in <module> > > File "/Users/matthew_hawthorn/Desktop/src/pynini-1.8/pynini_test.py", line 15, in <module> from pynini import * ImportError: dlopen(/Users/matthew_hawthorn/Desktop/src/pynini-1.8/pynini.cpython-36m-darwin.so, 2): Symbol not found: __ZN3re23RE213GlobalReplaceEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS0_RKNS_11StringPieceE Referenced from: /Users/matthew_hawthorn/Desktop/src/pynini-1.8/pynini.cpython-36m-darwin.so Line: 1705 to 1701 ### MattHawthorn - 2018-01-26 - 03:39 Added: > > Changed: < < Udate: following the same procedure as LeahVelleman above (recompile re2, then openfst, then python setup.py install from the pynini root) but this time using gcc-7/g++-7 seems to have resulted in at least a partially-functional python installation. when I run python setup.py test a large number of tests pass, but a large number also fail. The cheeses example at https://www.oreilly.com/ideas/how-to-get-superior-text-processing-in-python-with-pynini appears to be running fine though. If you would like the full output of the test suite, let me know and I'll send it to you - don't want to clutter the forum here with it since it's quite long. > > Udate: following the same procedure as LeahVelleman above (recompile re2, then openfst, then python setup.py install from the pynini root) but this time using gcc-7/g++-7 seems to have resulted in at least a partially-functional python installation. when I run python setup.py test a large number of tests pass, but a large number also fail. The cheeses example at https://www.oreilly.com/ideas/how-to-get-superior-text-processing-in-python-with-pynini appears to be running fine though. If you would like the full output of the test suite, let me know and I'll send it to you - don't want to clutter the forum here with it since it's quite long. ### XiaofengWu - 2018-10-10 - 12:02 Line: 1723 to 1721 GFST=G.toytwosent.2gm.2.fst ##get he arapLM Changed: < < cat <<EOF | ngram-count -lm$ARPALM -order 2 -text - 2>/dev/null
>
>
cat <<EOF | ngram-count -lm $ARPALM -order 2 -text - 2>/dev/null show me pants in size thirty two show me pants in size thirty too EOF Changed: < < #delete the following line , it will fail #-0.30103 in size thirty two </s> #sed -i.bak -e '57d'$ARPALM ###get G.fst get_G(){ cat $1 | #-0.30103 in size thirty two </s> #sed -i.bak -e '27d'$ARPALM
>
>
#delete the following line , it will fail #-0.30103 in size thirty two </s> #sed -i.bak -e '57d' $ARPALM ###get G.fst get_G(){ cat$1 | #-0.30103 in size thirty two </s> #sed -i.bak -e '27d' $ARPALM ngram -lm$ARPALM -write-lm $ARPALM.pruned -order 2 -prune-lowprobs ARPALM=$ARPALM.pruned

get_G(){ cat $1 | Changed: < < grep -v '<s> <s>' | grep -v '</s> <s>' | grep -v '</s> </s>' | > > grep -v '<s> <s>' | grep -v '</s> <s>' | grep -v '</s> </s>' | arpa2fst - | fstprint |${SCRIPT_DIR_FST}/eps2disambig.pl |
Line: 1745 to 1743
fstcompile --isymbols=${WORDS} --osymbols=${WORDS} --keep_isymbols=false --keep_osymbols=false |
Changed:
<
<
fstrmepsilon > $2 > > fstrmepsilon >$2
}
Changed:
<
<
get_G $ARPALM$GFST 2>/dev/null
>
>
get_G $ARPALM$GFST 2>/dev/null
fstdraw --isymbols=${WORDS} --osymbols=${WORDS} $GFST$GFST.dot dot -Tpdf $GFST.dot -o$GFST.dot.pdf #a sentence #get the best score of this sentence in G.fst
Changed:
<
<
echo "************" echo "the best score in $GFST is " cat <<EOF | fstcompile --acceptor=true --isymbols=$WORDS |tee smallg.fst| fstcompose --compose_filter=auto --connect=false --v=5 - $GFST| tee gG.fst | fstshortestpath | fstpush --to_final=true --push_weights=true | fstprint | awk '{if(NF==2){print -$2;}}'
>
>
echo "************" echo "the best score in $GFST is " cat <<EOF | fstcompile --acceptor=true --isymbols=$WORDS |tee smallg.fst| fstcompose --compose_filter=auto --connect=false --v=5 - $GFST| tee gG.fst | fstshortestpath | fstpush --to_final=true --push_weights=true | fstprint | awk '{if(NF==2){print -$2;}}'
1 2 show 2 3 me 3 4 pants
Line: 1778 to 1775
I have just compiled the library on alpine-linux and the gcc compiler is giving a lot of warnings at line 174 of arc-map.h.
Changed:
<
<
The warning points out that some code is incorrectly indented inside an if statement giving the impression that it is wrapped by the if when - because no curly braces are present - it is not. My reading of the rest of arc-map.h implies that this is in fact an error and curly braces should be added. The offending call to fst->SetFinal() is in the MAP_REQUIRE_SUPERFINAL clause.
>
>
The warning points out that some code is incorrectly indented inside an if statement giving the impression that it is wrapped by the if when - because no curly braces are present - it is not. My reading of the rest of arc-map.h implies that this is in fact an error and curly braces should be added. The offending call to fst->SetFinal() is in the MAP_REQUIRE_SUPERFINAL clause.

Changed:
<
<
If not an error fst->SetFinal() should be suitably outdented
>
>
If not an error fst->SetFinal() should be suitably outdented

Deleted:
<
<

### PaulHewlett - 2017-06-12 - 11:53

>
>

Changed:
<
<
<verbatim>
>
>
<verbatim>
case MAP_REQUIRE_SUPERFINAL: { if (s = superfinal) {
Changed:
<
<
A final_arc = (*mapper)(A(0, 0, fst->Final(s), kNoStateId));
>
>
A final_arc = (*mapper)(A(0, 0, fst->Final(s), kNoStateId));
if (final_arc.ilabel = 0 || final_arc.olabel = 0 || final_arc.weight = Weight::Zero())
Changed:
<
<
>
>
final_arc.weight, superfinal));
Changed:
<
<
fst->SetFinal(s, Weight::Zero());
>
>
fst->SetFinal(s, Weight::Zero());
} break;
Changed:
<
<
</verbatim>
>
>
</verbatim>

### KyleGorman - 2017-06-27 - 16:52

Line: 1807 to 1805

<--/commentPlugin-->
Deleted:
<
<

## How can I get SFST Library?

### VeljkoMiljanic - 2017-05-08 - 17:25

>
>

Changed:
<
<
>
>

Line: 1816 to 1813

Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:36

>
>

Changed:
<
<
I don't believe it's ready for release yet.
>
>
I don't believe it's ready for release yet.

### KyleGorman - 2018-07-17 - 22:34

Line: 1823 to 1820

### KyleGorman - 2018-07-17 - 22:34

>
>

Changed:
<
<
It's now available at opengrm.org
>
>
It's now available at opengrm.org

<--/commentPlugin-->
Line: 1837 to 1834
A B CD AB C D
Changed:
<
<
I used kaldi's recipe till CLG FST compilation and then my code because my Acoustic Model is Sphinx format.
>
>
I used kaldi's recipe till CLG FST compilation and then my code because my Acoustic Model is Sphinx format.
For a simple case like the one I mentioned above, I get the following error at the determinization step:
Changed:
<
<
<verbatim>FATAL: StringWeight::Plus: unequal arguments (non-functional FST?)</verbatim> However, if I use simple work around of Encode->Determinize->Decode using Thrax's Optimize function , it finishes compilation. I wonder what trick (that probably kaldi uses) in taking care of such kinds of trigram pronunciations.(that it maps the 2 same trigram pronunciations to different acoustic ID.)
>
>
<verbatim>FATAL: StringWeight::Plus: unequal arguments (non-functional FST?)</verbatim> However, if I use simple work around of Encode->Determinize->Decode using Thrax's Optimize function , it finishes compilation. I wonder what trick (that probably kaldi uses) in taking care of such kinds of trigram pronunciations.(that it maps the 2 same trigram pronunciations to different acoustic ID.)
Thanks,

I am not sure

Line: 1855 to 1852

### KyleGorman - 2017-05-30 - 14:37

>
>

Changed:
<
<
You'd have to ask at the Kaldi forums, but probably the same trick? It's a relatively well-known one.
>
>
You'd have to ask at the Kaldi forums, but probably the same trick? It's a relatively well-known one.

<--/commentPlugin-->
Line: 1875 to 1872
One of the issues of using fstreplace is that on short tasks with a baseline time one 1 second, it adds a flat time of 4 seconds, whereas there is almost no overhead with ReplaceFst.
Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:40

>
>

Changed:
<
<
fstreplace uses the scripting interface, which means that functions and classes have to be looked up in static registries, several layers of pointer dereferencing, and virtual dispatch, so that might be the additional time spent? ReplaceFst is also "on-the-fly" (lazy) whereas there is no reasonable way to use that from within a binary. So if you build a ReplaceFst but don't visit it all in the next step, it may do less work.
>
>
fstreplace uses the scripting interface, which means that functions and classes have to be looked up in static registries, several layers of pointer dereferencing, and virtual dispatch, so that might be the additional time spent? ReplaceFst is also "on-the-fly" (lazy) whereas there is no reasonable way to use that from within a binary. So if you build a ReplaceFst but don't visit it all in the next step, it may do less work.

<--/commentPlugin-->
Line: 1898 to 1896

Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:42

>
>

Changed:
<
<
None of us have old CentOS machines so it's difficult to replicate this. Could you just try with a more recent GCC? (That's quite old by Linux standards.)
>
>
None of us have old CentOS machines so it's difficult to replicate this. Could you just try with a more recent GCC? (That's quite old by Linux standards.)

<--/commentPlugin-->
Line: 1916 to 1913
My code is here :
Changed:
<
<
<verbatim> commands.add("/bin/sh"); commands.add("-c"); commands.add(execPath + "add-deltas ark:" + tempKlasor + "/stereo.ark ark:- | " + execPath + "nnet-forward --feature-transform=" + modelPath + "/word_model/final.feature_transform " + "--no-softmax=true --class-frame-counts=" + modelPath + "/word_model/ali_train_pdf.counts " + "--use-gpu=no " + modelPath + "/word_model/final.nnet ark:- ark:- | " + execPath + "/decode-faster-mapped --acoustic-scale=0.1 --allow-partial=true --max-active=1000 " + "--beam=7 " + modelPath + "/word_model/final.mdl " + modelPath + "/phone_model/HCLG.fst ark:- ark,t:" + tempKlasor + "/stereo.hyp ark:- | " + execPath + "ali-to-phones --per-frame=true " + modelPath + "/word_model/final.mdl ark:- ark,t:" + tempKlasor + "/stereo.phones"); <verbatim>
>
>
<verbatim> commands.add("/bin/sh"); commands.add("-c"); commands.add(execPath + "add-deltas ark:" + tempKlasor + "/stereo.ark ark:- | " + execPath + "nnet-forward --feature-transform=" + modelPath + "/word_model/final.feature_transform " + "--no-softmax=true --class-frame-counts=" + modelPath + "/word_model/ali_train_pdf.counts " + "--use-gpu=no " + modelPath + "/word_model/final.nnet ark:- ark:- | " + execPath + "/decode-faster-mapped --acoustic-scale=0.1 --allow-partial=true --max-active=1000 " + "--beam=7 " + modelPath + "/word_model/final.mdl " + modelPath + "/phone_model/HCLG.fst ark:- ark,t:" + tempKlasor + "/stereo.hyp ark:- | " + execPath + "ali-to-phones --per-frame=true " + modelPath + "/word_model/final.mdl ark:- ark,t:" + tempKlasor + "/stereo.phones"); <verbatim>
I expect this code to create stereo.phones file. But it did not create the file. I checked the file permissions. They all seem ok.
Line: 1936 to 1932
Thanks
Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:41

>
>

Changed:
<
<
>
>

<--/commentPlugin-->
Line: 1957 to 1952

david
Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:58

>
>

Changed:
<
<
Hi David, I can't replicate this. The return value of replace is pywrapfst._MutableFst (underlyingly it's an VectorFst), which supports the .add_arc(state, arc) method.
>
>
Hi David, I can't replicate this. The return value of replace is pywrapfst._MutableFst (underlyingly it's an VectorFst), which supports the .add_arc(state, arc) method.
As for symbol table access, if you want to mutate the symbol tables attached to an FST in-place, use .mutable_input_symbols() and .mutable_output_symbols() methods to get mutable references into the underlying tables.

Or, somewhat more slowly, make copies of the current symbol tables with .isymbols().copy() or .osymbols().copy(), mutate these, and then assign them back using .set_input_symbols(syms) and .set_output_symbols(syms).

Changed:
<
<
The only way for an FST to not be mutable in pywrapfst is if it was read from disk and it wasn't mutable when it was on disk either.
>
>
The only way for an FST to not be mutable in pywrapfst is if it was read from disk and it wasn't mutable when it was on disk either.

<--/commentPlugin-->
Line: 1990 to 1983
instantiation of "fst::VectorFst<A, S>::VectorFst() [with A=fst::LogArc, S=fst::VectorState<fst::LogArc, std::allocator<fst::LogArc>>]" at line 77 of "./../include/fst/register.h" instantiation of "fst::FstRegisterer<FST>::FstRegisterer() [with FST=fst::VectorFst<fst::LogArc, fst::VectorState<fst::LogArc, std::allocator<fst::LogArc>>>]" at line 41 of "fst.cc"
Changed:
<
<
Could this be fixed?
>
>
Could this be fixed?

### DanielRichardG - 2017-08-07 - 18:44

Line: 1998 to 1992
Hello PeterSmit,
Changed:
<
<
Yes, I've encountered this too. The Intel C++ compiler appears to be a bit more strict on C++ compared to g++.
>
>
Yes, I've encountered this too. The Intel C++ compiler appears to be a bit more strict on C++ compared to g++.
I researched this a bit at the time and found that this use of constexpr is incorrect. The following patch fixes the issue:
Deleted:
<
<

diff -ru openfst-1.6.2/src/include/fst/complement.h openfst-1.6.2/src/include/fst/complement.h
--- openfst-1.6.2/src/include/fst/complement.h   2017-03-13 15:54:39.000000000 -0400
Line: 2051 to 2043
The fix is pretty easy, see the explanation the error message from our tests:
Changed:
<
<
<verbatim>
>
>
<verbatim>
homebrew/science/openfst: * python modules have explicit framework links These python extension modules were linked directly to a Python framework binary. They should be linked with -undefined dynamic_lookup instead of -lpython or -framework Python. /usr/local/opt/openfst/lib/python2.7/site-packages/pywrapfst.so
Changed:
<
<
</verbatim>
>
>
</verbatim>
Line: 2065 to 2057
I hope this can be fixed. If you need any help I can also have a look at the code. Thanks in advance.
Deleted:
<
<

### KyleGorman - 2017-05-30 - 14:48

>
>

Changed:
<
<
HI Michka, sorry we're just seeing this! I'd be glad to fix this but I'm not sure I understand the error. Or rather, I don't know what causes -lpython to be used, since this compilation is all done inside of several layers of autoconf magic (see openfst-1.6.2/src/extensions/python/Makefile.am). Could you perhaps suggest a patch to that file to address this problem? (please feel free to email me directly: my email address is in the README.)
>
>
HI Michka, sorry we're just seeing this! I'd be glad to fix this but I'm not sure I understand the error. Or rather, I don't know what causes -lpython to be used, since this compilation is all done inside of several layers of autoconf magic (see openfst-1.6.2/src/extensions/python/Makefile.am). Could you perhaps suggest a patch to that file to address this problem? (please feel free to email me directly: my email address is in the README.)

<--/commentPlugin-->
Line: 2072 to 2064

<--/commentPlugin-->
Deleted:
<
<

## Python extension error

### WeijianLin - 2017-03-07 - 20:42

>
>
I successfully installed openfst
Changed:
<
<
It also passed 'make check'.
>
>
It also passed 'make check'.
And this is what i got when i tried to install python extension: Collecting openfst Downloading openfst-1.6.1.tar.gz (223kB)
Changed:
<
<
100% |████████████████████████████████| 225kB 1.7MB/s
>
>
100% |████████████████████████████████| 225kB 1.7MB/s
Installing collected packages: openfst Running setup.py install for openfst ... error
Changed:
<
<
Complete output from command /Users/weijian/anaconda2/bin/python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-3hgZ8Q/openfst/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-MksT_q-record/install-record.txt --single-version-externally-managed --compile:
>
>
Complete output from command /Users/weijian/anaconda2/bin/python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-3hgZ8Q/openfst/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-MksT_q-record/install-record.txt --single-version-externally-managed --compile:
running install running build running build_ext
Changed:
<
<
building 'pywrapfst' extension
>
>
building 'pywrapfst' extension
creating build creating build/temp.macosx-10.6-x86_64-2.7 gcc -fno-strict-aliasing -I/Users/anaconda2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/anaconda2/include/python2.7 -c pywrapfst.cc -o build/temp.macosx-10.6-x86_64-2.7/pywrapfst.o -std=c++11 -Wno-unneeded-internal-declaration -Wno-unused-function In file included from pywrapfst.cc:461:
Changed:
<
<
>
>
^ 1 error generated.
Changed:
<
<
error: command 'gcc' failed with exit status 1
>
>
error: command 'gcc' failed with exit status 1
I tried both --enable-python and --enable-far during configuration, still got the same error.

Any thoughts?

Line: 2105 to 2096
Any thoughts?
Deleted:
<
<

### KyleGorman - 2017-05-30 - 15:36

>
>

Changed:
<
<
I'd guess your compiler doesn't have full C++11 support, since it doesn't have the type_traits header. Upgrade and try again?
>
>
I'd guess your compiler doesn't have full C++11 support, since it doesn't have the type_traits header. Upgrade and try again?

<--/commentPlugin-->
Line: 2112 to 2103

<--/commentPlugin-->
Deleted:
<
<

### KyleGorman - 2017-03-17 - 14:43

>
>

Changed:
<
<
There's no way to store a string inside of a "label", but if you want to keep track of which label integers go with which strings, use the fst::SymbolTable class. Say you've already populated the symbol table syms, then you can do something like:
>
>
There's no way to store a string inside of a "label", but if you want to keep track of which label integers go with which strings, use the fst::SymbolTable class. Say you've already populated the symbol table syms, then you can do something like:
Line: 2132 to 2121
I am getting the following error when compiling version 1.6.1 on Ubuntu 16.10:
Changed:
<
<
<verbatim>
>
>
<verbatim>
In file included from ./../include/fst/fstlib.h:72:0, from ./../include/fst/script/arciterator-class.h:10, from arciterator-class.cc:4:
Changed:
<
<
./../include/fst/shortest-path.h: In function 'void fst::internal::SingleShortestPathBacktrace(const fst::Fst<Arc>&, fst::MutableFst<Arc>*, const std::vector<std::pair<typename Arc::StateId, long unsigned int> >&, typename Arc::StateId)': ./../include/fst/shortest-path.h:77:8: error: inconsistent deduction for 'auto': 'auto' and then 'int'
>
>
./../include/fst/shortest-path.h: In function 'void fst::internal::SingleShortestPathBacktrace(const fst::Fst<Arc>&, fst::MutableFst<Arc>*, const std::vector<std::pair<typename Arc::StateId, long unsigned int> >&, typename Arc::StateId)': ./../include/fst/shortest-path.h:77:8: error: inconsistent deduction for 'auto': 'auto' and then 'int'
for (auto state = f_parent, d = kNoStateId; state = kNoStateId; ^~~~
Changed:
<
<
</verbatim>
>
>
</verbatim>
Version 1.6.0 gives me a similar error at another location:
Changed:
<
<
<verbatim>
>
>
<verbatim>
In file included from ./../include/fst/state-map.h:15:0, from ./../include/fst/arcsort.h:14, from ./../include/fst/accumulator.h:15,
Line: 2152 to 2141
from ./../include/fst/lookahead-matcher.h:17, from ./../include/fst/matcher-fst.h:14, from fst.cc:14:
Changed:
<
<
./../include/fst/arc-map.h: In member function 'fst::GallicToNewSymbolsMapper<A, G>::ToArc fst::GallicToNewSymbolsMapper<A, G>::operator()(const FromArc&)': ./../include/fst/arc-map.h:968:14: error: inconsistent deduction for 'auto': 'int' and then 'auto' for (auto i = 0, p = state_; i < w1.Size();
>
>
./../include/fst/arc-map.h: In member function 'fst::GallicToNewSymbolsMapper<A, G>::ToArc fst::GallicToNewSymbolsMapper<A, G>::operator()(const FromArc&)': ./../include/fst/arc-map.h:968:14: error: inconsistent deduction for 'auto': 'int' and then 'auto' for (auto i = 0, p = state_; i < w1.Size();
^~~~
Changed:
<
<
</verbatim>
>
>
</verbatim>
Version 1.5.4 seems to work correctly. Any ideas about how to fix this?
Line: 2171 to 2160

### KyleGorman - 2017-03-17 - 14:45

>
>

Changed:
<
<
This is a known compiler bug. We've worked around it in 1.6.2, BTW.
>
>
This is a known compiler bug. We've worked around it in 1.6.2, BTW.
(BTW, not always safe to assume that int is the same as StateId. Use StateId instead.)
Line: 2186 to 2177
Also, how do I just create an acceptor (as opposed to a transducer) -- the StdArc takes output symbols and weights as arguments. Is there a variant which just takes input symbol and destination state? I noticed that there is no boolean semiring described. Do you just use the TropicalSemiring in that case?
Deleted:
<
<

### VictorMiller - 2017-02-03 - 11:01

>
>

Changed:
<
<
I've created a transducer and I want to minimize it. However, when I call Minimize I get the message:
>
>
I've created a transducer and I want to minimize it. However, when I call Minimize I get the message:
FATAL: Refusing to minimize a non-deterministic FST with allow_nondet = false

What is allow_nondet, and how to I set it to true?

Line: 2211 to 2203
Has anybody tried compiling openFST for iOS and using it in an app? I know this is Google code, so maybe not so likely ;). The compilation seems to go ok but when we use fst::Read to try and read in an FST we get an error:
Changed:
<
<
>
>
It happens regardless of whether we have a vector FST or change it to a const FST using fstconvert. Do the models also have to be created using the same platform, or can we create them on linux and use on MacOS / iOS?
Line: 2225 to 2217
(Out of curiosity, what happens if you
Changed:
<
<
#include <fst/const-fst.h>
>
>
#include <fst/const-fst.h>
then use ConstFst::Read ?)
Line: 2231 to 2223

### KyleGorman - 2017-01-23 - 12:59

>
>

Changed:
<
<
Note also that we use memory-mapped IO in OpenFst (for efficiency reasons), which means that serialized FSTs are not portable across platforms due to differing byte orderings; however your error suggests that this isn't an issue here.
>
>
Note also that we use memory-mapped IO in OpenFst (for efficiency reasons), which means that serialized FSTs are not portable across platforms due to differing byte orderings; however your error suggests that this isn't an issue here.

<--/commentPlugin-->
Changed:
<
<

>
>

## Looking for "Runtime Code" to simulate the application of a transducer

### KennethRBeesley - 2017-01-09 - 20:00

>
>

Changed:
<
<
Could some kind soul point me to any algorithmic "runtime code" that takes an OpenFST FST and an input string (basically a sequence of integers), and simulates the application of the FST to the input string and returns any results?
>
>
Could some kind soul point me to any algorithmic "runtime code" that takes an OpenFST FST and an input string (basically a sequence of integers), and simulates the application of the FST to the input string and returns any results?

Changed:
<
<
That is, straightforward application can be done by building the input string into an FST, composing the input-FST on the input side of the main FST, and then extracting the output projection of the resulting FST. But I'm looking for C++ runtime code that takes an input string, walks through the main FST algorithmically, without modifying it, collecting matching output strings, and finally returning the set of output strings related to the original input string.
>
>
That is, straightforward application can be done by building the input string into an FST, composing the input-FST on the input side of the main FST, and then extracting the output projection of the resulting FST. But I'm looking for C++ runtime code that takes an input string, walks through the main FST algorithmically, without modifying it, collecting matching output strings, and finally returning the set of output strings related to the original input string.
Any help would be much appreciated.
Line: 2248 to 2240
Any help would be much appreciated.
Deleted:
<
<

### KyleGorman - 2017-01-23 - 12:19

>
>

Changed:
<
<
That sounds pretty difficult (seems like you'd have to reinvent large portions of composition?), but I too would love to see a worked example.
>
>
That sounds pretty difficult (seems like you'd have to reinvent large portions of composition?), but I too would love to see a worked example.

### KennethRBeesley - 2017-01-25 - 18:07

Line: 2255 to 2247

### KennethRBeesley - 2017-01-25 - 18:07

>
>

Changed:
<
<
Difficult but not impossible. Here's a rough outline of what would need to be done. Assume that the arcs of the FST are marked with ints representing Unicode code point values (both on the input side and the output side of each arc label). And assume that the input is a single string, coded as a sequence of ints representing Unicode code point values. And assume that the FST is determinized, with Tropical Semiring weighting. The algorithm would start at the Start state of the FST; let that be the initial Current State; and at the beginning of the Input Sequence. Let the Current Weight be initialized to zero, and let the Current Output Sequence be an empty sequence of int. In the simplest case. where the FST has no epsilons (zeros) on the input side, you would take the first int of the input sequence (let that be the Current Input Symbol) and use a Matcher object to select the set of exit arcs leading from the Current State that match the Current Input Symbol on the input side. If there is just one such matching exit arc, "consume" the input symbol, collect the corresponding output int (output symbol) on the matching arc and append it to the Current Output Sequence, and add the weight of the matching arc to the Current Weight, and let the destination state of the arc be the new Current State. (If there's no match, then Fail.) Proceed like that until you simultaneously run out of input symbols and reach a Final State---that's a Success. Then collect or output the Current Output Sequence and its weight. Complications: at any Current State, if there are exit arcs with Epsilon on the input side, they need to be "explored" without consuming the Current Input Symbol. At any Current State, if there are multiple exit arcs that match the Current Input Symbol, or multiple epsilon arcs, or at least one epsilon arc and at least one matching arc, then you have a Branch State, and the algorithm would need to store the current State (Current State, position in the Input Sequence, Current Output Sequence, Current Weight) for future backups, and iterate through those exit arcs, exploring each one individually. After any path being explored succeeds or fails, the algorithm would need to backup to explore other yet-unexplored exit arcs at Branch States, restoring the State at the Branch as appropriate and exploring all remaining exit paths. Other complications: input-side epsilon loops; epsilon arcs leading from Final States where input succeeded. The algorithm could be implemented as Depth-First or Breadth-First. (Any corrections and suggestions would be appreciated.)
>
>
Difficult but not impossible. Here's a rough outline of what would need to be done. Assume that the arcs of the FST are marked with ints representing Unicode code point values (both on the input side and the output side of each arc label). And assume that the input is a single string, coded as a sequence of ints representing Unicode code point values. And assume that the FST is determinized, with Tropical Semiring weighting. The algorithm would start at the Start state of the FST; let that be the initial Current State; and at the beginning of the Input Sequence. Let the Current Weight be initialized to zero, and let the Current Output Sequence be an empty sequence of int. In the simplest case. where the FST has no epsilons (zeros) on the input side, you would take the first int of the input sequence (let that be the Current Input Symbol) and use a Matcher object to select the set of exit arcs leading from the Current State that match the Current Input Symbol on the input side. If there is just one such matching exit arc, "consume" the input symbol, collect the corresponding output int (output symbol) on the matching arc and append it to the Current Output Sequence, and add the weight of the matching arc to the Current Weight, and let the destination state of the arc be the new Current State. (If there's no match, then Fail.) Proceed like that until you simultaneously run out of input symbols and reach a Final State---that's a Success. Then collect or output the Current Output Sequence and its weight. Complications: at any Current State, if there are exit arcs with Epsilon on the input side, they need to be "explored" without consuming the Current Input Symbol. At any Current State, if there are multiple exit arcs that match the Current Input Symbol, or multiple epsilon arcs, or at least one epsilon arc and at least one matching arc, then you have a Branch State, and the algorithm would need to store the current State (Current State, position in the Input Sequence, Current Output Sequence, Current Weight) for future backups, and iterate through those exit arcs, exploring each one individually. After any path being explored succeeds or fails, the algorithm would need to backup to explore other yet-unexplored exit arcs at Branch States, restoring the State at the Branch as appropriate and exploring all remaining exit paths. Other complications: input-side epsilon loops; epsilon arcs leading from Final States where input succeeded. The algorithm could be implemented as Depth-First or Breadth-First. (Any corrections and suggestions would be appreciated.)

Changed:
<
<
Such algorithmic "runtime code" that simulates the composition of an input string and the extraction of the output-projection language was implemented in the Xerox Finite State Toolkit (lexc and xfst) and in Foma, a very good clone. And it was deemed in both projects to be much more efficient than doing the straightforward composition and output-projection extraction. The Foma runtime code is available, and I'm trying to get a handle on it. I worked at Xerox for years but never down at such low levels. Both Xerox and Foma implemented unweighted FSTs, so the code for OpenFST FSTs would need to be modified slightly to collect the weight along each path.
>
>
Such algorithmic "runtime code" that simulates the composition of an input string and the extraction of the output-projection language was implemented in the Xerox Finite State Toolkit (lexc and xfst) and in Foma, a very good clone. And it was deemed in both projects to be much more efficient than doing the straightforward composition and output-projection extraction. The Foma runtime code is available, and I'm trying to get a handle on it. I worked at Xerox for years but never down at such low levels. Both Xerox and Foma implemented unweighted FSTs, so the code for OpenFST FSTs would need to be modified slightly to collect the weight along each path.
I had hoped that such algorithmic runtime code might already be available for OpenFST FSTs. Hence my posting. Any pointers to such existing code would still be much appreciated.
Line: 2286 to 2279
No, sorry, no easy way to expose delayed composition at the moment.
Changed:
<
<
Just to play the devil's advocate:
>
>
Just to play the devil's advocate:
* do you know for a fact that this would be faster with delayed computation of the cascade? (i.e., is it faster when you do it like that in C++?) I would not assume that it is necessarily so---just that it takes up less memory under the default garbage collection / cache settings; it depends.
Changed:
<
<
* Have you confirmed that it's the composition and not the shortest-path operation that is responsible for the slow computation? (i.e., by assuming the composition result and then doing shortestpath on that?)
>
>
* Have you confirmed that it's the composition and not the shortest-path operation that is responsible for the slow computation? (i.e., by assuming the composition result and then doing shortestpath on that?)
* Would calling .optimize() on F (or manually optimizing with epsilon-removal, determinization, minimization, etc.) help?
<--/commentPlugin-->
Line: 2312 to 2304
I doubt whether, the multiple transitions introduced by me (to take care of the multiple pronunciation) at each state will be an issue?
Changed:
<
<
However, the multiple transitions have different outputs. I don't
>
>
However, the multiple transitions have different outputs. I don't
understand where did it go wrong. I always had a doubt that, Is HTK (by adding multiple pronunciations in dictionary) and WFST is the same. Or is WFST only a representation for speech recognition, is
Line: 2326 to 2318
Hi Mariya,
Changed:
<
<
Having multiple pronunciation variants in one's lexicon is a known problem in the literature on WFST speech recognition and OpenFst implements some solutions. FST disambiguation (http://www.openfst.org/twiki/bin/view/FST/DisambiguateDoc) is an algorithm specifically for making L \circ G determinizable and would seem to be applicable here.
>
>
Having multiple pronunciation variants in one's lexicon is a known problem in the literature on WFST speech recognition and OpenFst implements some solutions. FST disambiguation (http://www.openfst.org/twiki/bin/view/FST/DisambiguateDoc) is an algorithm specifically for making L \circ G determinizable and would seem to be applicable here.

Changed:
<
<
The error you're getting from fstdeterminize indicates that the FST to be determinized is non-functional (in the sense that it is a one-to-many relation). fstdeterminize does support non-functional determinization, though this can be very slow; in general, determinization has poor guarantees: it is not guaranteed to terminate (the FST may have the "twins property": http://www.cs.nyu.edu/~mohri/pub/twins.pdf) and even for determinizable FSTs the complexity may be exponential in the size of the input.
>
>
The error you're getting from fstdeterminize indicates that the FST to be determinized is non-functional (in the sense that it is a one-to-many relation). fstdeterminize does support non-functional determinization, though this can be very slow; in general, determinization has poor guarantees: it is not guaranteed to terminate (the FST may have the "twins property": http://www.cs.nyu.edu/~mohri/pub/twins.pdf) and even for determinizable FSTs the complexity may be exponential in the size of the input.

Changed:
<
<
If disambiguation doesn't help, here, you may want to see if you can use another trick: determinizing a weighted transducer as if it were an unweighted acceptor (http://www.cs.nyu.edu/~mohri/pub/dmk.pdf). This technique is used by fst::Optimize, a C++ function distributed with Pynini (pynini.opengrm.org) and Thrax (thrax.opengrm.org).
>
>
If disambiguation doesn't help, here, you may want to see if you can use another trick: determinizing a weighted transducer as if it were an unweighted acceptor (http://www.cs.nyu.edu/~mohri/pub/dmk.pdf). This technique is used by fst::Optimize, a C++ function distributed with Pynini (pynini.opengrm.org) and Thrax (thrax.opengrm.org).

Changed:
<
<
Both HTK and OpenFst use WFSTs, but I don't know much about the HTK internal representation thereof or how HTK handles multiple pronunciation variants.
>
>
Both HTK and OpenFst use WFSTs, but I don't know much about the HTK internal representation thereof or how HTK handles multiple pronunciation variants.

<--/commentPlugin-->
Line: 2363 to 2356

<--/commentPlugin-->
Changed:
<
<

>
>

## changes in reader->GetFst from 1.5.2 to 1.5.3?

### EstherJudd - 2016-09-29 - 06:10

>
>
I used to be able to get an FST from a FAR archive in c++ using
Line: 2371 to 2362
I used to be able to get an FST from a FAR archive in c++ using
Changed:
<
<
>
>
However with version 1.5.3 I get a compilation error and it works if I change to *fst but that seems to be incompatible with the older version that we still have running on our server. What is the best way to solve this apparent change (besides upgrading our server version)?
Line: 2376 to 2367
However with version 1.5.3 I get a compilation error and it works if I change to *fst but that seems to be incompatible with the older version that we still have running on our server. What is the best way to solve this apparent change (besides upgrading our server version)?
Deleted:
<
<

### KyleGorman - 2016-10-11 - 18:52

>
>

Changed:
<
<
This returns a pointer, not a reference, now, simply for cross-API consistency (other functions of the form "GetFst" all return a pointer as well). You're welcome to upgrade to any version >= 1.5.3 to get a version that returns a pointer. I can't think of a reasonable way to write code that can handle both, sorry.
>
>
This returns a pointer, not a reference, now, simply for cross-API consistency (other functions of the form "GetFst" all return a pointer as well). You're welcome to upgrade to any version >= 1.5.3 to get a version that returns a pointer. I can't think of a reasonable way to write code that can handle both, sorry.

### EstherJudd - 2016-10-18 - 04:43

Line: 2388 to 2380

<--/commentPlugin-->
Deleted:
<
<

## Showing characters in the input label in PyFST

### JoseOrtiz - 2016-09-28 - 19:41

>
>

Changed:
<
<
I'm using the method linear_chain to accept a String. When I convert it into a fst binary to then into a DOT format, I get integers instead of the characters. Also, I have a SymbolTable for each of the corresponding letters being read.
>
>
I'm using the method linear_chain to accept a String. When I convert it into a fst binary to then into a DOT format, I get integers instead of the characters. Also, I have a SymbolTable for each of the corresponding letters being read.
What I need is to show the characters instead, be by the command line or by coding directly into Python. Sorry if this is not the place to ask. Any help or reference would be greatly appreciated.
Line: 2406 to 2397
fstdraw --isymbols=isyms.txt --osymbols=osyms.txt binary.fst binary.dot
Changed:
<
<
I haven't been using this in python but maybe you can just do this?:
>
>
I haven't been using this in python but maybe you can just do this?:

Changed:
<
<
draw("binary.dot",input_symbols="isyms.txt",output_symbols="osyms.txt")
>
>
draw("binary.dot",input_symbols="isyms.txt",output_symbols="osyms.txt")

### KyleGorman - 2016-10-11 - 18:55

Line: 2412 to 2403

### KyleGorman - 2016-10-11 - 18:55

>
>

Changed:
<
<
The OpenFst developers don't contribute to pyfst, so you might be better off asking at their GitHub site:
>
>
The OpenFst developers don't contribute to pyfst, so you might be better off asking at their GitHub site:
https://github.com/vchahun/pyfst
Changed:
<
<
(Though note that project appears to have been abandoned: the last commit was 3 years ago, and it's unlikely to compile against any reasonable recent version of OpenFst).
>
>
(Though note that project appears to have been abandoned: the last commit was 3 years ago, and it's unlikely to compile against any reasonable recent version of OpenFst).

### JoseOrtiz - 2016-10-18 - 17:45

Line: 2427 to 2420

### KyleGorman - 2017-01-23 - 17:24

>
>

Changed:
<
<
pywrapfst is very much maintained; we use it every day. If you're having installation problems, does it compile?
>
>
pywrapfst is very much maintained; we use it every day. If you're having installation problems, does it compile?

<--/commentPlugin-->
Line: 2440 to 2433
Would it be possible to add functions to the weight templates that work equivalent to += and *= in C++, to avoid unnecessary copying? They could be .Times(const weight& w) and .Plus(const weight& w). The normal Times() and Plus() could then potentially be implemented using these.
Deleted:
<
<

### KyleGorman - 2016-10-11 - 19:07

>
>

Changed:
<
<
That certainly could be done. (Nit: you actually need separate LeftTimes and RightTimes methods, since some semirings are non-commutative as mentioned in http://www.openfst.org/twiki/bin/view/FST/FstWeightRequirements.) I'm not sure this is going to be worth much for the float weight types since everything ought to fit in CPU registers, and for composite weight types, I wonder if there's copy elision here. Do you know for a fact there's not? (I.e., what happens if you compile with -fno-elide-constructors on your system?)
>
>
That certainly could be done. (Nit: you actually need separate LeftTimes and RightTimes methods, since some semirings are non-commutative as mentioned in http://www.openfst.org/twiki/bin/view/FST/FstWeightRequirements.) I'm not sure this is going to be worth much for the float weight types since everything ought to fit in CPU registers, and for composite weight types, I wonder if there's copy elision here. Do you know for a fact there's not? (I.e., what happens if you compile with -fno-elide-constructors on your system?)

<--/commentPlugin-->
Line: 2457 to 2449
I am currently trying to set the Labels to more than one character per Label. Would this be possible?
Deleted:
<
<

### EstherJudd - 2016-08-23 - 08:33

>
>

Changed:
<
<
I have a SymbolTable where the symbols sometimes consist of two characters, so this shouldn't be a problem. I would advise you to work with a SymbolTable that maps each label to a number and train the FST with the numbers instead of the labels.
>
>
I have a SymbolTable where the symbols sometimes consist of two characters, so this shouldn't be a problem. I would advise you to work with a SymbolTable that maps each label to a number and train the FST with the numbers instead of the labels.

<--/commentPlugin-->
Line: 2471 to 2462
Hello,
Changed:
<
<
I am writing a Python application to traverse FSTs. I want to read in a binary FST (which does not have a symbol table associated with it), read in a symbol table, and set it as the binary FST's symbol table. The code that I've written looks like this:
>
>
I am writing a Python application to traverse FSTs. I want to read in a binary FST (which does not have a symbol table associated with it), read in a symbol table, and set it as the binary FST's symbol table. The code that I've written looks like this:
Changed:
<
<
This code works great when the symbol table does not have negative labels; however, it does not work when the symbol table has negative labels. The error I get is: "ERROR: SymbolTable::ReadText: Bad non-negative integer "-4"" (the symbol table I'm trying to read in has -4 as one if its labels).
>
>
This code works great when the symbol table does not have negative labels; however, it does not work when the symbol table has negative labels. The error I get is: "ERROR: SymbolTable::ReadText: Bad non-negative integer "-4"" (the symbol table I'm trying to read in has -4 as one if its labels).

Changed:
<
<
Is there a way to set allow_negative_labels to true using either SymbolTable.read or SymbolTable.read_text? I know this is possible in C++ and when using the openfst command line tool, but I'm struggling to figure out how to do this in Python.
>
>
Is there a way to set allow_negative_labels to true using either SymbolTable.read or SymbolTable.read_text? I know this is possible in C++ and when using the openfst command line tool, but I'm struggling to figure out how to do this in Python.
Thank you!
Line: 2484 to 2475
Thank you!
Deleted:
<
<

### KyleGorman - 2016-10-11 - 19:16

>
>

Changed:
<
<
There is a flag --allow_negative_labels for the binaries, but the ability to use them is not exposed to pywrapfst yet. I can do so, but I really wouldn't recommend using negative labels if you can possibly avoid it. I'll update the thread once/if I add this support.
>
>
There is a flag --allow_negative_labels for the binaries, but the ability to use them is not exposed to pywrapfst yet. I can do so, but I really wouldn't recommend using negative labels if you can possibly avoid it. I'll update the thread once/if I add this support.

### KyleGorman - 2016-10-13 - 20:37

Line: 2491 to 2482

### KyleGorman - 2016-10-13 - 20:37

>
>

Changed:
<
<
Okay, I've added the ability to specify that you want to permit negative labels for pywrapfst.SymbolTable.read_text. That'll be in the next release. But l I still strongly discourage using negative labels.
>
>
Okay, I've added the ability to specify that you want to permit negative labels for pywrapfst.SymbolTable.read_text. That'll be in the next release. But l I still strongly discourage using negative labels.

<--/commentPlugin-->
Line: 2496 to 2488

<--/commentPlugin-->
Deleted:
<
<

## openfst 1.5.3 causes ld to segfault with gcc 4.7.2

### DanielPovey - 2016-06-29 - 15:12

>
>

Changed:
<
<
On our grid in JHU, when compiling OpenFst 1.5.3, we get a segfault in "ld". I have never heard of "ld" segfaulting before so something pretty funky must be going on.
>
>
On our grid in JHU, when compiling OpenFst 1.5.3, we get a segfault in "ld". I have never heard of "ld" segfaulting before so something pretty funky must be going on.
What compiler versions do you think it should work on?
Deleted:
<
<
jtrmal@a14 ~/soft/openfst-1.5.3/src/script /bin/sh ../../libtool --verbose --tag=CXX --mode=link g++ -std=c++11 -version-info 4:0:0 -o libfstscript.la -rpath /usr/local/lib arciterator-class.lo arcsort.lo closure.lo compile.lo compose.lo concat.lo connect.lo convert.lo decode.lo determinize.lo difference.lo disambiguate.lo draw.lo encode.lo encodemapper-class.lo epsnormalize.lo equal.lo equivalent.lo fst-class.lo info.lo intersect.lo invert.lo isomorphic.lo map.lo minimize.lo print.lo project.lo prune.lo push.lo randequivalent.lo randgen.lo relabel.lo replace.lo reverse.lo reweight.lo rmepsilon.lo script-impl.lo shortest-distance.lo shortest-path.lo stateiterator-class.lo synchronize.lo text-io.lo topsort.lo union.lo weight-class.lo verify.lo ../lib/libfst.la -lm -ldl libtool: link: rm -fr .libs/libfstscript.so.4.0.0 libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.7/crtbeginS.o .libs/arciterator-class.o .libs/arcsort.o .libs/closure.o .libs/compile.o .libs/compose.o .libs/concat.o .libs/connect.o .libs/convert.o .libs/decode.o .libs/determinize.o .libs/difference.o .libs/disambiguate.o .libs/draw.o .libs/encode.o .libs/encodemapper-class.o .libs/epsnormalize.o .libs/equal.o .libs/equivalent.o .libs/fst-class.o .libs/info.o .libs/intersect.o .libs/invert.o .libs/isomorphic.o .libs/map.o .libs/minimize.o .libs/print.o .libs/project.o .libs/prune.o .libs/push.o .libs/randequivalent.o .libs/randgen.o .libs/relabel.o .libs/replace.o .libs/reverse.o .libs/reweight.o .libs/rmepsilon.o .libs/script-impl.o .libs/shortest-distance.o .libs/shortest-path.o .libs/stateiterator-class.o .libs/synchronize.o .libs/text-io.o .libs/topsort.o .libs/union.o .libs/weight-class.o .libs/verify.o -Wl,-rpath -Wl,/home/jtrmal/soft/openfst-1.5.3/src/lib/.libs ../lib/.libs/libfst.so -ldl -L/usr/lib/gcc/x86_64-linux-gnu/4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.7/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crtn.o -Wl,-soname -Wl,libfstscript.so.4 -o .libs/libfstscript.so.4.0.0 Line: 2520 to 2510 ### DanielPovey - 2016-06-29 - 20:25 Added: > > Changed: < < I have found more information from valgrind and submitted a bug-report in bugzilla, I think it's a linux binutils bug. > > I have found more information from valgrind and submitted a bug-report in bugzilla, I think it's a linux binutils bug. https://sourceware.org/bugzilla/show_bug.cgi?id=20317 Line: 2531 to 2523 I have documented in the last comment on https://sourceware.org/bugzilla/show_bug.cgi?id=20317 that the bug can be fixed by taking a certain line from a more recent binutils version 2.26 (this fix works for me; I have to compile binutils from source with the fix). Changed: < < So it looks like it's not a bug in OpenFst but a bug in binutils that it just happens to trigger. Our binutils is version 2.22. > > So it looks like it's not a bug in OpenFst but a bug in binutils that it just happens to trigger. Our binutils is version 2.22. Dan Line: 2538 to 2530 <--/commentPlugin--> Log In Deleted: < < ## ShortestDistance very slow? ### PafnoutiT - 2016-06-21 - 11:42 Added: > > Changed: < < I have an fst (actually a Kaldi lattice, it's an acyclic graph in the tropical semiring) on which I wanted to use fst::ShortestDistance to the final state, however it's very slow. > > I have an fst (actually a Kaldi lattice, it's an acyclic graph in the tropical semiring) on which I wanted to use fst::ShortestDistance to the final state, however it's very slow. It takes about 1.5 sec to process my lattice, whereas if I loop myself over the states and arcs to compute the same quantity it happens in 0.03 seconds. What could I have done wrong? Line: 2548 to 2539 What could I have done wrong? Deleted: < < ### KyleGorman - 2016-10-11 - 19:22 Added: > > Changed: < < It's possible that automatic queue selection is failing because certain property bits are not yet set. You could try turning up logging to see what queue is selected (see http://www.openfst.org/twiki/bin/view/FST/FstAdvancedUsage#State_Queues), or if you're comfortable, could simply assert that the FST is (e.g.,) acyclic (and possibly topologically sorted) using SetProperties() before calling ShortestDistance. It is also possible that the explicit queue is less efficient than manual iteration for this simple case, in which case you should feel free to stick with your implementation. > > It's possible that automatic queue selection is failing because certain property bits are not yet set. You could try turning up logging to see what queue is selected (see http://www.openfst.org/twiki/bin/view/FST/FstAdvancedUsage#State_Queues), or if you're comfortable, could simply assert that the FST is (e.g.,) acyclic (and possibly topologically sorted) using SetProperties() before calling ShortestDistance. It is also possible that the explicit queue is less efficient than manual iteration for this simple case, in which case you should feel free to stick with your implementation. <--/commentPlugin--> Log In Line: 2555 to 2546 <--/commentPlugin--> Log In Deleted: < < ## Shortest distance very slow? ### PafnoutiT - 2016-06-21 - 11:41 Added: > > Changed: < < I have an fst (actually a Kaldi lattice, it's an acyclic graph in the tropical semiring) on which I wanted to use fst::ShortestDistance, however it's very slow. > > I have an fst (actually a Kaldi lattice, it's an acyclic graph in the tropical semiring) on which I wanted to use fst::ShortestDistance, however it's very slow. It takes about 1.5 sec to process my lattice, whereas if I loop myself over the states and arcs to compute the same quantity it happens in 0.03 seconds. What could I have done wrong? Line: 2590 to 2579 /usr/local/include/fst/script/fst-class.h:277:3: note: candidate expects 0 arguments, 1 provided At global scope: Changed: < < cc1plus: warning: unrecognized command line option "-Wno-unneeded-internal-declaration" [enabled by default] error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 > > cc1plus: warning: unrecognized command line option "-Wno-unneeded-internal-declaration" [enabled by default] error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 Am I missing something? Thank you! Line: 2601 to 2590 I get a similar error with clang: Changed: < < building 'pywrapfst' extension > > building 'pywrapfst' extension clang -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c pywrapfst.cc -o build/temp.macosx-10.11-x86_64-2.7/pywrapfst.o -std=c++11 -Wno-unneeded-internal-declaration -Wno-unused-function Changed: < < pywrapfst.cc:41102:22: error: no matching constructor for initialization of 'fst::script::FstClass' > > pywrapfst.cc:41102:22: error: no matching constructor for initialization of 'fst::script::FstClass' Changed: < < __pyx_v_tfst = new fst::script::FstClass(__pyx_v_self->_reader->GetFstClass()); > > __pyx_v_tfst = new fst::script::FstClass(__pyx_v_self->_reader->GetFstClass()); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Changed: < < /usr/local/include/fst/script/fst-class.h:281:3: note: candidate constructor not viable: no known conversion from 'const fst::script::FstClass *' to 'const fst::script::FstClass' for 1st argument; dereference the argument with * > > /usr/local/include/fst/script/fst-class.h:281:3: note: candidate constructor not viable: no known conversion from 'const fst::script::FstClass *' to 'const fst::script::FstClass' for 1st argument; dereference the argument with * FstClass(const FstClass &other) ^ Changed: < < /usr/local/include/fst/script/fst-class.h:383:12: note: candidate constructor not viable: no known conversion from 'const fst::script::FstClass *' to 'fst::script::FstClassImplBase *' for 1st argument > > /usr/local/include/fst/script/fst-class.h:383:12: note: candidate constructor not viable: no known conversion from 'const fst::script::FstClass *' to 'fst::script::FstClassImplBase *' for 1st argument explicit FstClass(FstClassImplBase *impl) : impl_(impl) {} ^ Changed: < < /usr/local/include/fst/script/fst-class.h:279:12: note: candidate template ignored: could not match 'Fst<type-parameter-0-0>' against 'const fst::script::FstClass *' > > /usr/local/include/fst/script/fst-class.h:279:12: note: candidate template ignored: could not match 'Fst<type-parameter-0-0>' against 'const fst::script::FstClass *' Changed: < < explicit FstClass(const Fst<Arc> &fst) : impl_(new FstClassImpl<Arc>(fst)) {} > > explicit FstClass(const Fst<Arc> &fst) : impl_(new FstClassImpl<Arc>(fst)) {} ^ Line: 2637 to 2626 1 error generated. Changed: < < error: command 'clang' failed with exit status 1 > > error: command 'clang' failed with exit status 1 ### KyleGorman - 2016-10-11 - 19:24 Line: 2641 to 2630 ### KyleGorman - 2016-10-11 - 19:24 Added: > > Changed: < < There's no reason to call pip. The version up there is not compatible with arbitrary OpenFst versions. If you do --enable-python then make and make install, you have already installed pywrapfst for whatever version of OpenFst you're building. > > There's no reason to call pip. The version up there is not compatible with arbitrary OpenFst versions. If you do --enable-python then make and make install, you have already installed pywrapfst for whatever version of OpenFst you're building. <--/commentPlugin--> Log In Line: 2646 to 2636 <--/commentPlugin--> Log In Deleted: < < ## Changing Stateid value. ### JoseOrtiz - 2016-06-18 - 12:30 Added: > > Changed: < < I'm trying to read files in GFA format and then parse into an openfst format. In GFA format, each new line starts with a character that identifies what type of line it is. What I've done so far is if it starts with H, it ignore the rest of the line and go the next one. If it starts with S, it means it's a state, so it proceeds to identify each part of the line which consist of five strings including the S. After this, I add a state, but I want my state to hold the value of one of the strings identified in the line, which is a numerical value. As I understand, when you use an AddState, it return a Stateid which begins at zero, then increments by one. If it helps, I'm currently using a StdVectorFst object for the AddState function. I am reading about the SetState function from the vector_fst_base_impl class, would I be able to use this funcion to first get the StateId I want to change and then assign the new value? If so, would this cause any errors? > > I'm trying to read files in GFA format and then parse into an openfst format. In GFA format, each new line starts with a character that identifies what type of line it is. What I've done so far is if it starts with H, it ignore the rest of the line and go the next one. If it starts with S, it means it's a state, so it proceeds to identify each part of the line which consist of five strings including the S. After this, I add a state, but I want my state to hold the value of one of the strings identified in the line, which is a numerical value. As I understand, when you use an AddState, it return a Stateid which begins at zero, then increments by one. If it helps, I'm currently using a StdVectorFst object for the AddState function. I am reading about the SetState function from the vector_fst_base_impl class, would I be able to use this funcion to first get the StateId I want to change and then assign the new value? If so, would this cause any errors? Thanks. Line: 2688 to 2675 Can anyone give me a clue about the issue ? Deleted: < < ### KyleGorman - 2016-10-11 - 19:26 Added: > > Changed: < < Assuming that /usr/local/include/fst/fstlib.h exists and is readable for your user, you may need to ensure that that directory is in your include path. At the compiler level you will want to use the -I flag to pass the directory, but I'm not sure how to do this with SphinxTrain. There may be something wrong with your environment (this directory should very much be in your include path) or with the SphinxTrain configuration setup, but this doesn't seem to be an issue with OpenFst per se. > > Assuming that /usr/local/include/fst/fstlib.h exists and is readable for your user, you may need to ensure that that directory is in your include path. At the compiler level you will want to use the -I flag to pass the directory, but I'm not sure how to do this with SphinxTrain. There may be something wrong with your environment (this directory should very much be in your include path) or with the SphinxTrain configuration setup, but this doesn't seem to be an issue with OpenFst per se. <--/commentPlugin--> Log In Line: 2695 to 2682 <--/commentPlugin--> Log In Deleted: < < ## ArcIterator construction is very slow with delayed composition ### RyanPrenger - 2016-05-03 - 16:04 Added: > > Changed: < < Hi. I've written a decoder loosely based on Kaldi's simple-decoder that is reasonably fast on an FST that was composed offline (lex + language model). When I try using the decoder on the FST created with delayed composition it's around 100 times slower. All the time seems to be spent in the ArcIterator construction steps. The language model is around 500 megs, and the lex is around 15 megs. Would one expect such a large slow down? How do people usually get decoders to perform with a large language model (the composition results in an FST about double the size)? > > Hi. I've written a decoder loosely based on Kaldi's simple-decoder that is reasonably fast on an FST that was composed offline (lex + language model). When I try using the decoder on the FST created with delayed composition it's around 100 times slower. All the time seems to be spent in the ArcIterator construction steps. The language model is around 500 megs, and the lex is around 15 megs. Would one expect such a large slow down? How do people usually get decoders to perform with a large language model (the composition results in an FST about double the size)? Deleted: < < ### KyleGorman - 2016-10-11 - 19:34 Added: > > Changed: < < It could be quite slow to work with a delayed composition, particularly if the offline composition is slow. The former is used to implement the latter, and many tricks which speed up offline composition should make working with a delayed composition faster too. These include use of specific matchers (or modifying the inputs, e.g. with arc-sorting or setting the FST's properties) so that ComposeFst chooses the best matcher), state tables, and composition filters (see http://www.openfst.org/twiki/bin/view/FST/FstEfficiency), and selecting the best associativities for cascaded compositions. You might just try to make the offline composition fast and then port that solution to the delayed composition-based decoder. > > It could be quite slow to work with a delayed composition, particularly if the offline composition is slow. The former is used to implement the latter, and many tricks which speed up offline composition should make working with a delayed composition faster too. These include use of specific matchers (or modifying the inputs, e.g. with arc-sorting or setting the FST's properties) so that ComposeFst chooses the best matcher), state tables, and composition filters (see http://www.openfst.org/twiki/bin/view/FST/FstEfficiency), and selecting the best associativities for cascaded compositions. You might just try to make the offline composition fast and then port that solution to the delayed composition-based decoder. <--/commentPlugin--> Log In Line: 2710 to 2696 <--/commentPlugin--> Log In Deleted: < < ## Speed of weighted FST loading in c++ ### EstherJudd - 2016-04-12 - 04:28 Added: > > Changed: < < I have created a large FST for g2p. Using this command I have been able to get some speed savings when loading. I apply this command in a shell script when building the FST. <br> <verbatim>fstconvert --fst_type=const --fst_align=true in.ofst out.ofst</verbatim> <br> > > I have created a large FST for g2p. Using this command I have been able to get some speed savings when loading. I apply this command in a shell script when building the FST. <br> <verbatim>fstconvert --fst_type=const --fst_align=true in.ofst out.ofst</verbatim> <br> I have also been able to reduce the size of my FST by creating a compressed version using: Changed: < < <br> <verbatim>fstcompress --gzip=true out.fst out_compr.fst</verbatim> <br> > > <br> <verbatim>fstcompress --gzip=true out.fst out_compr.fst</verbatim> <br> Now I read in my final FST in c++ but I use the StdVectorFst. I was reading that it is faster to use StdConstFst but when I use that, I get an error saying that that class is not derived from MutableFst. I use the following command to read in the compressed FST: Changed: < < <br> <verbatim> > > <br> <verbatim> StdVectorFst *decompressed = new StdVectorFst(); Decompress(remap_fst_name,decompressed,true); Changed: < < </verbatim> <br> > > </verbatim> <br> So my question is, how can I increase the load speed for this large FST? Line: 2737 to 2722 fstcompress is for small file footprint; expands on load and is not fast. constfst is a bit faster to load than vectorfst not memory-mapped and much faster memory-mapped (but then is demand paged as used). Changed: < < you can't mutate a constfst. > > you can't mutate a constfst. Line: 2754 to 2741 <--/commentPlugin--> Log In Deleted: < < ## Possible bug in ReplaceFstMatcher? ### GautamT - 2016-02-25 - 22:59 Added: > > Changed: < < ReplaceFstMatcher in replace.h instantiates MultiEpsMatcher for each of the component fst with mode kMultiEpsList and non terminal labels as possible epsilon. It does this for both MATCH_INPUT and MATCH_OUTPUT case. Under the condition ofMATCH_INPUT, this seems wrong to me. Let's look at the 2 possible scenarios under MATCH_INPUT. > > ReplaceFstMatcher in replace.h instantiates MultiEpsMatcher for each of the component fst with mode kMultiEpsList and non terminal labels as possible epsilon. It does this for both MATCH_INPUT and MATCH_OUTPUT case. Under the condition ofMATCH_INPUT, this seems wrong to me. Let's look at the 2 possible scenarios under MATCH_INPUT. Changed: < < 1. epsilon on replace is false: Under this condition input labels continue to remain and do not become epsilons. Input symbols could represent a domain different from output symbols and therefore input labels with values matching those of the non terminals shouldn't be considered epsilons. Replace operation takes place based on the output label and not input label. Current behaviour would match self loop (kNoLabel) against these. Dropping this behaviour would also result in performance gain since one would not have to do a Find on the underlying machine for each of the non terminal label to match against self loop. > > 1. epsilon on replace is false: Under this condition input labels continue to remain and do not become epsilons. Input symbols could represent a domain different from output symbols and therefore input labels with values matching those of the non terminals shouldn't be considered epsilons. Replace operation takes place based on the output label and not input label. Current behaviour would match self loop (kNoLabel) against these. Dropping this behaviour would also result in performance gain since one would not have to do a Find on the underlying machine for each of the non terminal label to match against self loop. 2. epsilon on replace is true: Under this condition, input label accompanying a non terminal output label is always re-written to epsilon irrespective of whether or not its value is also that of a non terminal. Matching self loop against input in this case is tricky because one would need to match against corresponding output label. To begin input labels are sorted to use this matcher, to match against output labels that are not sorted does not seem to be a good idea. Changed: < < My thoughts are that for MATCH_INPUT if epsilon on replace is false then we don't need to use MultiEpsMatcher for each underlying machine, or not perform AddMutlipleEpsLabel. If epsilon on replace is true then not use this matcher and the user wouldn't be able to take advantage of the option to not always cache. The other possible option would be to mandate that if epsilon on replace is true then input label match that of output label for non terminal arc and check this on detecting a non terminal label in the output arc. > > My thoughts are that for MATCH_INPUT if epsilon on replace is false then we don't need to use MultiEpsMatcher for each underlying machine, or not perform AddMutlipleEpsLabel. If epsilon on replace is true then not use this matcher and the user wouldn't be able to take advantage of the option to not always cache. The other possible option would be to mandate that if epsilon on replace is true then input label match that of output label for non terminal arc and check this on detecting a non terminal label in the output arc. To confirm to myself that this is a bug, I constructed a root fst and a sub fst and created a replace fst that is used for a composition with another fst. The replace fst is the rhs fst or fst2 so that it is matched on the input side. The fsts are created in such a way as to expose this problem. The result was that if one were to not do a lazy replace, i.e. fully expand it and then use it for composition, one would get a different result from using a lazy replace or replace fst. For reproducibility, here are the fsts: Line: 2835 to 2820 Thank you. Deleted: < < ### MichaelRiley - 2016-05-27 - 10:13 Added: > > Changed: < < Possibly changed endianity when crossing platforms. Fix - don't do that. > > Possibly changed endianity when crossing platforms. Fix - don't do that. Line: 2843 to 2828 ### KyleGorman - 2016-10-11 - 19:40 Added: > > Changed: < < Right, because IO is memory-mapped, don't expect serialized FSTs to work on a platform with a different endianity. It's a small price to pay for faster IO. > > Right, because IO is memory-mapped, don't expect serialized FSTs to work on a platform with a different endianity. It's a small price to pay for faster IO. <--/commentPlugin--> Log In Line: 2855 to 2840 Hello, Changed: < < Given a text line containing mistakes (Example "AL WUYS LO W PRICES", the correct text line should be "ALWAYS LOW PRICES"). Considering that i have a lexicon and language model. How can i compute the edit distance of this given text line? > > Given a text line containing mistakes (Example "AL WUYS LO W PRICES", the correct text line should be "ALWAYS LOW PRICES"). Considering that i have a lexicon and language model. How can i compute the edit distance of this given text line? Please help Best regards Line: 2870 to 2855 <--/commentPlugin--> Log In Changed: < < ## TypeError: unsupported operand type(s) for -: 'int' and 'RestrictedProperty' > > ## TypeError: unsupported operand type(s) for -: 'int' and 'RestrictedProperty' ### MariamAAMER - 2016-02-04 - 13:01 Added: > > Changed: < < Hi, I am trying to create a script. The part that doesn't work is the pasted below: class MyGrating(Structure): wg_W = PositiveNumberProperty(required = True) wg_L = PositiveNumberProperty(required = True) taper_L = PositiveNumberProperty(required = True) wg_W_Grating = PositiveNumberProperty(required = True) period_Grating = PositiveNumberProperty(required = True) DC_Grating = PositiveNumberProperty(required = True) n_periods_Grating = PositiveNumberProperty(required = True) width_Grating = PositiveNumberProperty(required = True) Out_wg = PositiveNumberProperty(default=1)# 1 si queremos que dibuje guia, 0 si no la queremos def define_elements(self, elems): inside the define_elements, i have a for loop, and inside it, i have todo make an arithmetic operation between two of the above defined properties. I get an error message that says: TypeError: unsupported operand type(s) for -: 'int' and 'RestrictedProperty' > > Hi, I am trying to create a script. The part that doesn't work is the pasted below: class MyGrating(Structure): wg_W = PositiveNumberProperty(required = True) wg_L = PositiveNumberProperty(required = True) taper_L = PositiveNumberProperty(required = True) wg_W_Grating = PositiveNumberProperty(required = True) period_Grating = PositiveNumberProperty(required = True) DC_Grating = PositiveNumberProperty(required = True) n_periods_Grating = PositiveNumberProperty(required = True) width_Grating = PositiveNumberProperty(required = True) Out_wg = PositiveNumberProperty(default=1)# 1 si queremos que dibuje guia, 0 si no la queremos def define_elements(self, elems): inside the define_elements, i have a for loop, and inside it, i have todo make an arithmetic operation between two of the above defined properties. I get an error message that says: TypeError: unsupported operand type(s) for -: 'int' and 'RestrictedProperty' Somebody could help me to resolve it. Thanks to everybody Line: 2881 to 2865 <--/commentPlugin--> Log In Deleted: < < ## Linking problem on 64bit arch ### DodoIvanecky - 2016-01-08 - 09:54 Added: > > Changed: < < I am trying to create a simple application with openFST. While fst.Write is working for my simple graph, functions like RmEpsilon or Determinize are not possible to link. In the first case I am getting: undefined reference to fst::ReverseProperties(unsigned long, bool)' > > I am trying to create a simple application with openFST. While fst.Write is working for my simple graph, functions like RmEpsilon or Determinize are not possible to link. In the first case I am getting: undefined reference to fst::ReverseProperties(unsigned long, bool)' and it is O.K. since: uint64 ReverseProperties(uint64 inprops, bool has_superinitial); But why/from where is fst::ReverseProperties(unsigned long, bool) called, I have no idea. Any hint is appreciated. Line: 2890 to 2873 and it is O.K. since: uint64 ReverseProperties(uint64 inprops, bool has_superinitial); But why/from where is fst::ReverseProperties(unsigned long, bool) called, I have no idea. Any hint is appreciated. Deleted: < < ### DodoIvanecky - 2016-01-08 - 11:22 Added: > > Changed: < < Looks like I see the same problem with several Property function. Calling Determinize I got undefined reference to fst::DeterminizeProperties(unsigned long, bool, bool)'. Which is O.K. because: uint64 DeterminizeProperties(uint64 inprops, bool has_subsequential_label, bool distinct_psubsequential_labels) > > Looks like I see the same problem with several Property function. Calling Determinize I got undefined reference to fst::DeterminizeProperties(unsigned long, bool, bool)'. Which is O.K. because: uint64 DeterminizeProperties(uint64 inprops, bool has_subsequential_label, bool distinct_psubsequential_labels) ### DodoIvanecky - 2016-01-08 - 12:33 #### Revision 292018-12-28 - AaronChantrill Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 19 to 19 Added: > > ## Non-constant assertion for static assertion ### AaronChantrill - 2018-12-28 - 17:45 I'm trying to build OpenFST 1.7.0 for use on a Raspberry Pi. I'm using the following configure: ./configure --enable-static --enable-shared --enable-far --enable-lookahead-fsts --enable-const-fsts --enable-pdt --enable-ngram-fsts --enable-linear-fsts --prefix=/usr and getting the following error back: In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); ^~~~~~~~~~~~~ ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ Makefile:460: recipe for target 'fst.lo' failed At first I thought this was an architecture issue, but when I tried building on an x86_32 and my primary x86_64 system I got the exact same issue. I've searched the internet and read through the INSTALL, README and NEWS, but don't see anything specifically addressing this. Do I need to be passing an additional argument to the compiler? Thanks! ### AaronChantrill - 2018-12-28 - 17:53 Additional: I guess I can't edit a post after submitting it. The error occurs during "make" not during configure. <verbatim> In file included from ./../include/fst/arc.h:16:0, from ./../include/fst/fst.h:26, from fst.cc:6: ./../include/fst/float-weight.h:229:1: error: non-constant condition for static assertion static_assert(TropicalWeight::NoWeight().Member(), "NoWeight not member"); ^~~~~~~~~~~~~ ./../include/fst/float-weight.h:229:49: in constexpr expansion of ‘fst::TropicalWeightTpl<T>::NoWeight<float>().fst::TropicalWeightTpl<T>::Member<float>()’ ./../include/fst/float-weight.h:208:20: error: ‘(+QNaNf >= -3.40282347e+38f)’ is not a constant expression return Value() > Limits::NegInfinity(); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ Makefile:460: recipe for target 'fst.lo' failed </verbatim> <--/commentPlugin--> Log In ## Unknown FST type "vector" (arc type = "standard") ### BruceLin - 2018-12-25 - 01:43 #### Revision 282018-12-25 - BruceLin Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 19 to 19 Added: > > ## Unknown FST type "vector" (arc type = "standard") ### BruceLin - 2018-12-25 - 01:43 when I run fstarcsort --sort_type=olabel my_in.fst > my_out.fst, I got the the following error MutableFst::Read: Unknown FST type "vector" (arc type = "standard") My environment is cygwin and openfst-1.6.7. I can fix where i got wrong, can some one help? <--/commentPlugin--> Log In ## make money online ### SamAmaar - 2018-12-24 - 14:35 #### Revision 272018-12-24 - SamAmaar Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 19 to 19 Added: > > ## make money online ### SamAmaar - 2018-12-24 - 14:35 https://www.dleell.com <--/commentPlugin--> Log In ## pair weights in weight ### AliiiiRezaaa - 2018-11-04 - 08:08 #### Revision 262018-11-04 - AliiiiRezaaa Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 19 to 19 Added: > > ## pair weights in weight ### AliiiiRezaaa - 2018-11-04 - 08:08 Hi all I want to compile fst that have multiple weight and draw it. how can I do that? for example my fst.txt is: 0 1 311 0 0,20,51 0 2 361 0 0,51,68 0 247 0 1 -1.09863,51,150 0 3 864 0 0,71,91 0 4 885 0 0,94,118 0 5 545 0 0,118,150 but it error: fstcompile fst.txt FATAL: FstCompiler: Bad weight = "0,20,51", source = index.1.txt, line = 1 ERROR: FstHeader::Read: Bad FST header: standard input best regards ### AliiiiRezaaa - 2018-11-04 - 08:11 0 1 311 0 0,20,51 0 2 361 0 0,51,68 0 247 0 1 -1.09863,51,150 0 3 864 0 0,71,91 0 4 885 0 0,94,118 0 5 545 0 0,118,150 0 6 818 0 0,150,209 0 7 0 0 -2.2998,57,239 <--/commentPlugin--> Log In ## ComposeFst Memory Allocation ### DaniloDeOliveira - 2018-08-24 - 16:04 #### Revision 252018-10-31 - KyleGorman Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 19 to 19 Deleted: < < ### OlegPudlo - 2018-09-20 - 07:51 Вторая работа 130,11 от moneyonlineinvestment.com для клиентов Merdarionpien. нет сомнений в том, проект действительно действует уведомление. Я рассматриваю не мошенничество Cognitiomatrix стоит $0,0100 Ежедневная оплата !!! https://moneyonlineinvestment.com/r/299144 <--/commentPlugin--> Log In ## ComposeFst Memory Allocation ### DaniloDeOliveira - 2018-08-24 - 16:04 Line: 52 to 41 Are you accounting for the size of each State that is pointed to (not fixed since it contains a vector of arcs)? Also for vector based components you'd expect a non-trivial difference between their size() and capacity(). Fragmentation could be another issue. Deleted: < < ## ComposeFst Memory Allocation ### DaniloDeOliveira - 2018-08-24 - 16:00 Hi, I’m trying to manage the memory usage of a ComposeFst object for a lazy decoder. I monitor the size of the vector of known states in VectorCacheStore, as well as the composition state table, both not garbage collected, with the following methods: *Vector of known states:*<br> • Inside VectorCacheStore:<br> <verbatim>size_t GetExtraAllocBytes() { return state_vec_.size() * sizeof(State *) ; }</verbatim> *State table:*<br> • Inside ComposeFstImpl:<br> <verbatim>size_t GetStateTableSize(){ return GetStateTable()->Size()*sizeof(StateTuple) ; }</verbatim> I use the sum of the output of these two methods along with the garbage collector limit in order to estimate the total memory allocated by ComposeFst and be able to re-initialize the ComposeFst object periodically. However, when I monitor memory usage via the top command, it doesn’t match this estimation, it says I’m using more memory than that. Am I missing anything? <--/commentPlugin--> Log In ## openfst-1.6.8.tar.gz checksum changed ### SimonPodlesny - 2018-08-02 - 06:55 #### Revision 242018-10-10 - XiaofengWu Line: 1 to 1  META TOPICPARENT name="WebHome" # OpenFst Forum Line: 1627 to 1627 Udate: following the same procedure as LeahVelleman above (recompile re2, then openfst, then python setup.py install from the pynini root) but this time using gcc-7/g++-7 seems to have resulted in at least a partially-functional python installation. when I run python setup.py test a large number of tests pass, but a large number also fail. The cheeses example at https://www.oreilly.com/ideas/how-to-get-superior-text-processing-in-python-with-pynini appears to be running fine though. If you would like the full output of the test suite, let me know and I'll send it to you - don't want to clutter the forum here with it since it's quite long. Added: > > ### XiaofengWu - 2018-10-10 - 12:02 fstcompose failed with no complain... Hi Could any help me with this? I used fstcompose to compose two toy fst, one is an acceptor, the other is a G.fst... if I just delete some line in the arpaLM which is used to create the G.fst, the composition will fail with no complain. Tried to debug it but its too hard for me. the code is  ARPALM=lm.arpa WORDS=words.txt GFST=G.toytwosent.2gm.2.fst ##get he arapLM cat <<EOF | ngram-count -lm$ARPALM -order 2 -text - 2>/dev/null show me pants in size thirty two show me pants in size thirty too EOF #delete the following line , it will fail #-0.30103 in size thirty two </s> #sed -i.bak -e '57d' $ARPALM ###get G.fst get_G(){ cat$1 | #-0.30103 in size thirty two </s> #sed -i.bak -e '27d' $ARPALM ngram -lm$ARPALM -write-lm $ARPALM.pruned -order 2 -prune-lowprobs ARPALM=$ARPALM.pruned

get_G(){ cat $1 | grep -v '<s> <s>' | grep -v '</s> <s>' | grep -v '</s> </s>' | arpa2fst - | fstprint |${SCRIPT_DIR_FST}/eps2disambig.pl | ${SCRIPT_DIR_FST}/s2eps.pl | fstcompile --isymbols=${WORDS} --osymbols=${WORDS} --keep_isymbols=false --keep_osymbols=false | fstrmepsilon >$2 }

get_G $ARPALM$GFST 2>/dev/null

fstdraw --isymbols=${WORDS} --osymbols=${WORDS} $GFST$GFST.dot dot -Tpdf $GFST.dot -o$GFST.dot.pdf #a sentence #get the best score of this sentence in G.fst echo "************" echo "the best score in $GFST is " cat <<EOF | fstcompile --acceptor=true --isymbols=$WORDS |tee smallg.fst| fstcompose --compose_filter=auto --connect=false --v=5 - $GFST| tee gG.fst | fstshortestpath | fstpush --to_final=true --push_weights=true | fstprint | awk '{if(NF==2){print -$2;}}' 1 2 show 2 3 me 3 4 pants 4 5 in 5 6 size 6 7 thirty 7 8 too 8 EOF 

<--/commentPlugin-->

#### Revision 232018-09-20 - OlegPudlo

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 19 to 19

>
>

### OlegPudlo - 2018-09-20 - 07:51

Вторая работа $130,11 от moneyonlineinvestment.com для клиентов Merdarionpien. нет сомнений в том, проект действительно действует уведомление. Я рассматриваю не мошенничество Cognitiomatrix стоит$ 0,0100 Ежедневная оплата !!! https://moneyonlineinvestment.com/r/299144

<--/commentPlugin-->

## ComposeFst Memory Allocation

### DaniloDeOliveira - 2018-08-24 - 16:04

#### Revision 222018-08-25 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 69 to 69
Last time, when I was deploying OpenFst library in my project I did a checksum for download due to a insecure connection. Now, when I wanted to deploy project again, checksum is different. Is it possible that content of library was changed after it was made available for download? Last time when I downloaded library, current version was 1.6.8 and I copied sha256checksum from website (ba5a36662635eb68c202c0133d6137575342a5d507c2875fb0c859c5f199ead9), now sha256checksum is: af3f69ad3e32363e3a8c0e5953396ed35ee3130a0f27264b005879aeefd43236
>
>

### KyleGorman - 2018-08-25 - 18:57

I don't know, but can you just use the more recent one that's up?

<--/commentPlugin-->

#### Revision 212018-08-24 - MichaelRiley

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 35 to 35
I use the sum of the output of these two methods along with the garbage collector limit in order to estimate the total memory allocated by ComposeFst and be able to re-initialize the ComposeFst object periodically. However, when I monitor memory usage via the top command, it doesn’t match this estimation, it says I’m using more memory than that. Am I missing anything?
Deleted:
<
<
<--/commentPlugin-->

>
>

### MichaelRiley - 2018-08-24 - 22:41

Are you accounting for the size of each State that is pointed to (not fixed since it contains a vector of arcs)? Also for vector based components you'd expect a non-trivial difference between their size() and capacity(). Fragmentation could be another issue.

## ComposeFst Memory Allocation

### DaniloDeOliveira - 2018-08-24 - 16:00

#### Revision 202018-08-24 - DaniloDeOliveira

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 19 to 19

>
>

## ComposeFst Memory Allocation

### DaniloDeOliveira - 2018-08-24 - 16:04

Hi, I’m trying to manage the memory usage of a ComposeFst object for a lazy decoder. I monitor the size of the vector of known states in VectorCacheStore, as well as the composition state table, both not garbage collected, with the following methods:

*Vector of known states:*<br>

• Inside VectorCacheStore:<br>
<verbatim>size_t GetExtraAllocBytes() { return state_vec_.size() * sizeof(State *) ; }</verbatim>

*State table:*<br>

• Inside ComposeFstImpl:<br>
<verbatim>size_t GetStateTableSize(){ return GetStateTable()->Size()*sizeof(StateTuple) ; }</verbatim>

I use the sum of the output of these two methods along with the garbage collector limit in order to estimate the total memory allocated by ComposeFst and be able to re-initialize the ComposeFst object periodically. However, when I monitor memory usage via the top command, it doesn’t match this estimation, it says I’m using more memory than that. Am I missing anything?

<--/commentPlugin-->

## ComposeFst Memory Allocation

### DaniloDeOliveira - 2018-08-24 - 16:00

Hi, I’m trying to manage the memory usage of a ComposeFst object for a lazy decoder. I monitor the size of the vector of known states in VectorCacheStore, as well as the composition state table, both not garbage collected, with the following methods:

*Vector of known states:*<br>

• Inside VectorCacheStore:<br>
<verbatim>size_t GetExtraAllocBytes() { return state_vec_.size() * sizeof(State *) ; }</verbatim>

*State table:*<br>

• Inside ComposeFstImpl:<br>
<verbatim>size_t GetStateTableSize(){ return GetStateTable()->Size()*sizeof(StateTuple) ; }</verbatim>

I use the sum of the output of these two methods along with the garbage collector limit in order to estimate the total memory allocated by ComposeFst and be able to re-initialize the ComposeFst object periodically. However, when I monitor memory usage via the top command, it doesn’t match this estimation, it says I’m using more memory than that. Am I missing anything?

<--/commentPlugin-->

## openfst-1.6.8.tar.gz checksum changed

### SimonPodlesny - 2018-08-02 - 06:55

#### Revision 192018-08-02 - SimonPodlesny

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 19 to 19

>
>

## openfst-1.6.8.tar.gz checksum changed

### SimonPodlesny - 2018-08-02 - 06:55

Hello,

Last time, when I was deploying OpenFst library in my project I did a checksum for download due to a insecure connection. Now, when I wanted to deploy project again, checksum is different. Is it possible that content of library was changed after it was made available for download? Last time when I downloaded library, current version was 1.6.8 and I copied sha256checksum from website (ba5a36662635eb68c202c0133d6137575342a5d507c2875fb0c859c5f199ead9), now sha256checksum is: af3f69ad3e32363e3a8c0e5953396ed35ee3130a0f27264b005879aeefd43236

<--/commentPlugin-->

## Implementing FST composition with "slop"

### PiotrZelasko - 2018-06-29 - 11:40

#### Revision 182018-07-17 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 1609 to 1609
I don't believe it's ready for release yet.
>
>

### KyleGorman - 2018-07-17 - 22:34

It's now available at opengrm.org

<--/commentPlugin-->

#### Revision 172018-07-12 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 29 to 29
Reference: https://www.elastic.co/guide/en/elasticsearch/guide/current/slop.html
>
>

### KyleGorman - 2018-07-12 - 00:09

I don't know how "slop" is implemented there but an obvious implementation of fuzzy matching with FSTs is described under FstExamples (see the section entitled "Edit Distance"). Here's an implementation using our Python wrappers:

That allows you to match between two strings of possibly infinite distance apart. If you only want to consider something a match when it's up to k characters (symbols) away, then there's an easier approach and it's in fact much faster at runtime: instead of composing with a cyclic edit transducer, you compose with a transducer that allows zero or one edits, and compose that with itself up to k times.

<--/commentPlugin-->

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 19 to 19

>
>

## Implementing FST composition with "slop"

### PiotrZelasko - 2018-06-29 - 11:40

Hi there!

Is there an option to perform FST composition with OpenFST which would allow some kind of "slop" parameter, similarly as in ElasticSearch (see the first example in attached link)? If not, what do you think would be the best approach to implement it? I'm thinking about lookahead matchers but perhaps there is a simpler way.

<--/commentPlugin-->

## Binaries exit silently reading unknown FST weight type

### KirillKatsnelson - 2018-05-30 - 08:26

#### Revision 152018-06-13 - KyleGorman

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 29 to 29
The binary's main function then just exits without invoking the FSTERROR().
>
>

### KyleGorman - 2018-06-13 - 20:49

Thanks, fixed.

<--/commentPlugin-->

#### Revision 142018-05-30 - MichaelRiley

Line: 1 to 1

 META TOPICPARENT name="WebHome"

# OpenFst Forum

Line: 589 to 589
is the compiled FST from your toy example well-formed? (what does fstinfo say about it?)
Deleted:
<
<

### EditaStewart - 2017-12-04 - 11:42

https://www.echoes-of-war.com

<--/commentPlugin-->
Line: 1791 to 1787

<--/commentPlugin-->
Deleted:
<
<

## Coin

### EditaStewart - 2017-03-23 - 07:08

I would need to see your grammar to know whether it's a bug in the grammar or a bug in Thrax itself. مواقع تعدين البيتكوين

### KyleGorman - 2017-05-30 - 15:35

@PeterSmit we can fix this in the next version. It does appear to be against the spec.
Line: 1881 to 1868

<--/commentPlugin-->
Deleted:
<
<

## Dream

### EditaStewart - 2017-03-05 - 16:32

In the shell you have the possibility to set up strings as ilabels and olabels (with isymbols.txt and osymbols.txt) But when I followed the QuickTour and wanted to do it all in the C++-Editor I couldn't find out, how to give the strings to an vectorfst. I can only give them integers as labels, because of the definition of stdarc. Would be glad if someone could point out that to me. PS Is it even effective to make it all in the C++-editor (I am using Eclipse)? تفسير الاحلام

### KyleGorman - 2017-03-17 - 14:43

Changed:
<
<
Hi Edita, there's no way to store a string inside of a "label", but if you want to keep track of which label integers go with which strings, use the fst::SymbolTable class. Say you've already populated the symbol table syms, then you can do something like:
>
>
There's no way to store a string inside of a "label", but if you want to keep track of which label integers go with which strings, use the fst::SymbolTable class. Say you've already populated the symbol table syms, then you can do something like:
Line: 2680 to 2656
Solved. Problem is compiler. Needs to be at least 4.8. The reported problem was with 4.6 version.
Deleted:
<
<

### AnnaWarry - 2016-08-27 - 19:52

If you need install the las version visit http://www.csee.ogi.edu/~sproatr/Courses/TextNorm/tutorial.html this web have a great manual.

Anna Warry Unix Administrator in https://www.good-fundraising-ideas.com/

<--/commentPlugin-->

## converting standard lattice format into and FST file

### MuhammadSalem - 2015-11-11 - 08:11

Hi i have Standard lattice format files, and i want to convert them into WFST to use them in Kaldi each file contains more than one NULL node, which were used in htk to decrease number of arcs, now if i want to convert those files to FST What should those null nodes be in the symbol file Not that i am working with the specific symbol file as input symbol file and output symbol file in order to finish the process

<--/commentPlugin-->

## Minimization for fsts with negative weights

--

I get weird results when I try to minimize a tropical weight fst with negative weights as shown below. Additionally, the minimization takes quite long (around 20 seconds) although the fst only has 2 states.

$cat bar.txt 0 1 1 1 -5 1 1 2 2 -1 1 0$ fstcompile bar.txt bar.ofst
$fstminimize bar.ofst bar.min.ofst$ fstprint bar.min.ofst
0      1      1      1      -16777220
1      1      2      2
1      16777216


As far as I understand, this fst is already minimal so fstminimize shouldn't really do anything.

If I convert all weights to positive weights, the problem vanishes

$cat baz.txt 0 1 1 1 5 1 1 2 2 1 1 0$ fstcompile baz.txt baz.ofst
$fstminimize baz.ofst baz.min.ofst$ fstprint baz.min.ofst
0      1      1      1      5
1      1      2      2      1
1


### DoganCan - 2015-09-02 - 22:29

Hi Miikka,

The minimization algorithm first applies weight pushing to normalize the distribution of weights along the paths of the input automaton. Weight pushing algorithm requires shortest distance from any state to final states to be defined. The example automaton with negative weights violates this condition due to the negative weight cycle.

You can look into Jason Eisner's WFSA minimization algorithm if you need to minimize automata with negative weights, particularly if they have negative weight cycles.

Cheers, Dogan

### MiikkaSilfverberg - 2015-09-03 - 06:59

Thanks for the explanation Dogan I'll look into Eisner's minimization algorithm. Do you happen to know about freely available implementations?

### DoganCan - 2015-09-03 - 22:34

Hi Miikka

I don't know if there is a publicly available implementation of Eisner's algorithm.

Cheers, Dogan

<--/commentPlugin-->

## Gentle Intro to Lazy FST Operations

### KennethRBeesley - 2015-08-13 - 16:18

Where can I find a gentle introduction to lazy FST operations? When and how to use them? Tradeoffs in size and performance?

### MichaelRiley - 2016-05-27 - 10:18

there is teh OpenFSt library paper ref'ed under background material topic here and there is some comments on efficiency in the efficiency topic.
<--/commentPlugin-->

## Wildcard arcs

### RussellMoore - 2015-08-10 - 09:58

Hi, sorry if this has been asked before. I am using OpenFST via the command line interface, so I want to build my FSTs as text files before compiling them. I would like to know if it's possible to add an arc that will:

• accept any as-yet unspecified symbol as input
• output the same symbol

So in my head I imagine something like:

0 1 a a [wgt_a]
0 1 * * [wgt_other]


Where the asterisks represent "any other symbol", i.e. that arc operates as a catch-all for any symbol that is not "a".

(Update 17:35 - I think what I want is a "rho" matcher. Can I specify this inside a text file? Or is there another way to do it?)

Thanks!

### DoganCan - 2015-08-11 - 22:59

Hi Russell,

In OpenFst, special symbol information is not stored in the FSTs themselves, but are handled by the FST operations that accept these symbols as arguments. Unfortunately, special symbol matching operations are not available through the command line interface of standard OpenFst binaries. What you can do instead is to use a custom FST composition binary that can handle rho symbols.

Check out https://github.com/dogancan/lexicon-unk. There you will find a tool called fstphirhocompose which allows bare bones matching of phi and rho symbols on the second FST. This tool won't do what you need out of the box since you want matched symbols to be copied to the output side. To fix that, simply change each occurrence of MATCHER_REWRITE_NEVER with MATCHER_REWRITE_ALWAYS in fstphirhocompose.cc before compiling the code. You use this tool exactly the same way you would use fstcompose, however you can also specify the labels corresponding to the phi and rho symbols in the second FST through the command line interface. Take a look at the run.sh script in that repo to see how this tool can be used to match special symbols.

Cheers, Dogan

<--/commentPlugin-->

## TopSort not working on FST

### VivekRangarajan - 2015-07-27 - 15:33

I run into a weird issue when I create a fst in C++ from a string by adding states and arcs. I have a function that does this work. When I write the FST using Write(), the final state is printed at the top. It looks like this:

5
0   1   66   66
0   2   81   81
0   3   2837   2837
1   2   10   10
1   3   749   749
1   4   930   930
2   3   66   66
2   4   324   324
2   5   864   864
3   4   8   8
3   5   146   146
4   5   30   30


fsttopsort on this fst does not sort the states either. I overcame this by just piping fstprint X | sort -k 1 -n | fstcompile

Any ideas as to why this might be happening and how it can be fixed inside the C++ code?

### DoganCan - 2015-08-03 - 20:08

Hi Vivek,

It is hard to debug your problem without seeing the code. My best guess is that you are not setting state 0 as the initial state.

Cheers, Dogan

### VivekRangarajan - 2015-08-05 - 16:38

Thanks Dogan. I resolved this sometime back and should've added a comment. Your guess was right, I was setting the SetStart to str.size() instead of 0.
<--/commentPlugin-->

## Generation of words accepted by a Finite-State Machine

### JulioCarrasquel - 2015-06-04 - 15:00

Hello,

I would like to know how to print all the words that can be accepted for a Finite-State Machine. Note that I'm using acceptors. There is a library called Lextools who does the Job, specifically using a function of that library called lexfsmstrings , but unfortunately it's not longer available free by the guys of AT&T.

### MichaelRiley - 2016-05-27 - 10:20

You could ask for a very large number of n-best from fstshortestpath.

### GaborPinter - 2016-08-01 - 06:46

> all the words... Provided the FSA/FST is acyclic (otherwise it would take somewhat longer), it is relatively easy to write a program in C++ that recursively iterates over all the arcs. With output size of around 10k per fst it was surprisingly fast.

### KyleGorman - 2016-10-11 - 19:45

Pynini (pynin.opengrm.org) i also has something called StringPaths which enumerates all paths in an acyclic FST. If you don't want to use Python, you could build something off of the paths.h header therein.

If the FST is not acyclic, it would, of course, take not just "somewhat" longer but infinitely longer

<--/commentPlugin-->

## Arcs labeled with strings

### JulioCarrasquel - 2015-06-03 - 09:51

Hi again,

I have another question. I need to print using Graphviz a FST whose arc labels could be displayed as letters. I will highly appreciate a solution for this case. Thanks

Julio

### JulioCarrasquel - 2015-06-03 - 11:22

I've already found a solution to this too. Thanks.
<--/commentPlugin-->

## Putting only one expression on arcs

### JulioCarrasquel - 2015-06-01 - 11:12

Hello,

I need to put only one expression in the arcs of my FST since I'm not<br> modelling transducers, but acceptors. <br>

I mean, for example, to put in an arc only "x" instead of "x:y". <br>

If someone has a quick solution to this, I will highly appreciate it.

Regards, <br> Julio Carrasquel <br> juliocarrasquel@gmail.com

### JulioCarrasquel - 2015-06-01 - 11:14

I forgot to mention, I'm using in my project the command line library.

### JulioCarrasquel - 2015-06-03 - 11:22

Nevermind,

I found a solution using the option --acceptor=true through the command fstdraw.

Thanks in any case.

<--/commentPlugin-->

## Expected edit distance

### RolandSchwarz - 2015-05-08 - 03:26

Hi,

I was wondering if it is possible using the library to compute the expected edit distance between two distributions over strings.

So, if X and Y are FSAs that contain a single sequence each, and T is my edit distance transducer then shortestdist(X o T o Y) over the tropical SR computes the edit distance.

(a) Now assume X and Y are probabilistic FSAs (log SR), i.e. they define a valid distribution over a set of sequences, how do I compute the expected edit distance, i.e. \sum_x \sum_y P(x) P(y) ED(x,y)?

(b) And finally, given a probabilistic FST that defines a joint distribution for X and Y, how do I compute the expected edit distance over the joint, i.e. \sum_x \sum_y P(x,y) ED(x,y)?

I guess in the case (a) the expectation SR might help? But how do I do it in the case (b)?

Any help would really be appreciated.

Thanks,

Roland

### DoganCan - 2015-05-11 - 19:58

Hi Roland,

There is an algorithm by Mohri for computing expected edit distance between weighted automata. See this paper for details.

I implemented a slightly modified version of this algorithm some time ago. I just put together a simple setup based on that implementation and pushed it to GitHub in case you want to take a look at it.

Cheers, Dogan

### RolandSchwarz - 2015-05-13 - 05:51

Amazing, thanks, I'll check it out!

Roland

<--/commentPlugin-->

## Assigning the symbol table to FSTs in C++

### AnuragDas - 2015-05-04 - 08:56

Hi, I am able to build a FST from a string through C++. But the symbol table is showing "None" when i do a fstinfo. I want to add symbol table like "**Byte" which gets added automatically when we do "thraxmakedep" from a grammar file with --save_symbols set = True but through c++ only.

<--/commentPlugin-->

## From weighted words to weighted phrase: how to isolate word scores at phrase level?

### FrancoisSofilvacer - 2015-04-11 - 13:43

Such an operation must be classical in any concrete usage of FST cascade (OCR, speech, ...) but I struggle to express it in OpenFST.

Take a simple example: the input is a character stream, made of words inter-spaced with blanks. A non-weighted and functional lexicon FST maps sequences of letters to words. To deal with uncertainty, a weighted and non-functional extension of it maps a sequence of letters to word/score pairs.

For handling a sequence of words, a concatenation of WFSTlex is needed, resulting in multiplying (in the weight semiring) word scores but eventually, the contribution of each word is lost: the only score available encompasses the entire input.

So a language model FST, further down in the cascade has no access to individual word scores, preventing it to compute a context-dependent weighted average for example, associating a word x with a different coefficient depending on it preceding y or z.

<--/commentPlugin-->

## Compiling with mingw32

### BenoitFavre - 2015-02-26 - 07:44

In case you want to compile openfst 1.4.1 with mingw (for cross-compiling it for windows from unix, for example). You need to use a mmap implementation such as mman-win32 and set LDFLAGS to use it.

make LDFLAGS=-lmman

Here is the patch:

diff -rupN old/src/lib/mapped-file.cc new/src/lib/mapped-file.cc

old/src/lib/mapped-file.cc 2014-04-30 00:15:18.000000000 +0200 +++ new/src/lib/mapped-file.cc 2015-02-26 08:53:46.339405863 +0100
Line: 20 to 20
Deleted:
<
<
#include <fcntl.h> #include <unistd.h>

+#if (defined _WIN32 || defined _WIN64 || defined WINDOWS || defined MINGW32) +#include <windows.h> +#endif + namespace fst {

// Alignment required for mapping structures (in bytes.) Regions of memory

Line: 76 to 80
Deleted:
<
<
size_t pos = spos; int fd = open(source.c_str(), O_RDONLY); if (fd = -1) { +#if (defined _WIN32 || defined _WIN64 || defined WINDOWS || defined MINGW32) + SYSTEM_INFO system_info; + GetSystemInfo(&system_info); + int pagesize = system_info.dwPageSize; +#else int pagesize = sysconf(_SC_PAGESIZE); +#endif off_t offset = pos % pagesize; off_t upsize = size + offset; void *map = mmap(0, upsize, PROT_READ, MAP_SHARED, fd, pos - offset);

<--/commentPlugin-->

## Is there an existing implementation to check if one node is reachable from another in an fst ?

### NatS - 2015-02-24 - 12:44

<--/commentPlugin-->
Deleted:
<
<

### KostyaK - 2015-02-14 - 17:49

Hi! I used with etalon code to do lookahead composition: <verbatim> typedef fst::StdVectorFst GRAPH; GRAPH _graph1, _graph2; //... fst::StdOLabelLookAheadFst graph1Look(_graph1); std::auto_ptr<GRAPH> graph2TrueRelabel(_graph2.Copy(true)); fst::LabelLookAheadRelabeler<GRAPH::Arc>::Relabel(graph2TrueRelabel.get(), graph1Look, true); fst::ArcSort(graph2TrueRelabel.get(), fst::StdILabelCompare()); std::auto_ptr<GRAPH> res(new GRAPH); fst::Compose(graph1Look, *graph2TrueRelabel.get(), res.get()); </verbatim> It's work great, but i want to do lookahead composition without PushWeightsComposeFilter for example. First, I try to repeat lookahead composition without class wrappers: <verbatim> typedef fst::StdVectorFst GRAPH; GRAPH _graph1, _graph2; //... typedef fst::LabelLookAheadMatcher<fst::SortedMatcher<GRAPH>, fst::olabel_lookahead_flags> LOOK_MATCHER; typedef fst::SortedMatcher<GRAPH> SORTED_MATCHER; typedef fst::SequenceComposeFilter<LOOK_MATCHER, SORTED_MATCHER> SEQ_FILTER; typedef fst::LookAheadComposeFilter<SEQ_FILTER, LOOK_MATCHER, SORTED_MATCHER, fst::MATCH_OUTPUT> LOOK_COMPOSE_FILTER; typedef fst::PushWeightsComposeFilter<LOOK_COMPOSE_FILTER, LOOK_MATCHER, SORTED_MATCHER, fst::MATCH_OUTPUT> PUSH_WEIGHTS_FILTER; typedef fst::PushLabelsComposeFilter<PUSH_WEIGHTS_FILTER, LOOK_MATCHER, SORTED_MATCHER, fst::MATCH_OUTPUT> PUSH_LABELS_FILTER;

typedef PUSH_LABELS_FILTER COMPOSE_FILTER;

// My compose options fst::CacheOptions cacheOptions; fst::ComposeFstImplOptions<LOOK_MATCHER, SORTED_MATCHER, COMPOSE_FILTER> composeOptions(cacheOptions); composeOptions.matcher1 = new LOOK_MATCHER(_graph1, fst::MATCH_OUTPUT);

//Relabel _graph1 such as fst::StdOLabelLookAheadFst graph1Look(_graph1); LOOK_MATCHER::MatcherData* matcherData = composeOptions.matcher1->GetData(); fst::LabelReachable<Arc> graph1Reachable(matcherData); std::auto_ptr<GRAPH> graph1Relabeled(&_graph1); graph1Reachable.Relabel(graph1Relabeled.get(), false); graph1Relabeled->SetInputSymbols(NULL);

//Relabel _graph2 such as fst::LabelLookAheadRelabeler<GRAPH::Arc>::Relabel(graph2TrueRelabel.get(), graph1Look, true); fst::LabelReachable<Arc> graph2Reachable(matcherData); std::auto_ptr<GRAPH> graph2Relabeled(&_graph2); graph2Reachable.Relabel(graph2Relabeled.get(), true);

fst::ArcSort(graph2Relabeled.get(), fst::StdILabelCompare());

composeOptions.matcher2 = new SORTED_MATCHER(*graph2Relabeled.get(), fst::MATCH_INPUT); composeOptions.filter = new COMPOSE_FILTER(*graph1Relabeled.get(), *graph2Relabeled.get(), composeOptions.matcher1, composeOptions.matcher2);

std::auto_ptr<GRAPH> composedRes(new GRAPH); *composedRes = fst::ComposeFst<Arc>(*graph1Relabeled.get(), *graph2Relabeled.get(), composeOptions); </verbatim>

But result of my lookahead composition code is not equal to result of etalon code: my graph is much smaller than etalon. What I'm doing wrong? May be exists other way?

### KostyaK - 2015-02-14 - 17:57

<verbatim> test </verbatim>

### KostyaK - 2015-02-14 - 18:08

Text formatting don't work?

<--/commentPlugin-->

## fstshortestpath --unique?

### GezaKiss - 2015-02-10 - 14:50

I used this command, expecting it to produce all unique output strings - but it produced only one. The FST I tried it on contained just the two possible pronunciations of the orthographic form "record", and nothing else (here '}' separates the input and output symbols): r}9r e}E c}k o}3r r}<epsilon> d}d r}9r e}I c}k o}oU r}9r d}d

My questions: 1) What is the meaning of the --unique parameter? 2) How can I get the behavior I want using OpenFst (i.e. all the possible output strings)?

Thanks! Géza

### KyleGorman - 2015-09-03 - 16:20

Hi Géza, I assume you've figured this out by now, but just in case: --unique simply indicates that the resulting shortest path FST will contain only distinct paths, but it doesn't specify how many distinct paths will be present. How many paths are returned is controlled by the --nshortest flag, which it defaults to 1.

(Presumably the reason --unique doesn't have the semantics you expected it to is that the machine might be cyclic, in which case termination would not be guaranteed. But any suggestions to improve the documentation would be taken under consideration.)

<--/commentPlugin-->

## farcreate bug

### DoganCan - 2015-01-15 - 21:36

Hi,

I just wanted to report a small bug in farcreate. When the --file_list_input option is set to true, farcreate skips the first input file on the command line due to an off by one error. Below is the relevant fix.

Cheers, Dogan

diff -ur openfst-1.4.1.orig/src/include/fst/extensions/far/create.h openfst-1.4.1/src/include/fst/extensions/far/create.h
--- openfst-1.4.1.orig/src/include/fst/extensions/far/create.h   2014-04-25 02:55:40.000000000 -0700
+++ openfst-1.4.1/src/include/fst/extensions/far/create.h   2014-04-25 02:57:48.000000000 -0700
Line: 48 to 48
Deleted:
<
<
vector inputs; if (file_list_input) { - for (int i = 1; i < in_fnames.size(); ++i) { + for (int i = 0; i < in_fnames.size(); ++i) { ifstream istrm(in_fnames[i].c_str()); string str; while (getline(istrm, str))

### KyleGorman - 2015-09-10 - 19:49

Hi, thanks for that bug report. A fix should be in the next release.
<--/commentPlugin-->

## Using LabelLookAheadMatcher on input fst and PhiMatcher on output fst in LookAheadComposeFilter

### OliverW - 2014-12-10 - 16:19

Hi,

I'm trying to use the LabelLookAheadMatcher on an input fst (a lexicon transducer) and the PhiMatcher on an output fst (a custom ngram fst) in a LookAheadComposeFilter.

The setup is as follows:

// Phimatcher typedef fst::PhiMatcher<fst::SortedMatcher<fst::Fst<fst::LogArc> > > PM;

// some definitions for the lookahead matcher class
public: typedef fst::LogArc ARC;
typedef fst::Fst<ARC> FST;
typedef fst::SortedMatcher<FST> SM;
typedef fst::AltSequenceComposeFilter<OLAM, PM> ASCF;
typedef fst::LookAheadComposeFilter<ASCF, OLAM, PM, fst::MATCH_OUTPUT> LACF;
typedef fst::LabelReachableData<typename ARC::Label> LRD;
typedef fst::LabelReachable<ARC, fst::DefaultAccumulator<ARC>, LRD> Reachable;
};

// the lookahed matcher

// create relabler to be used to relabel LanguageModelFST input labels

// create phi matcher with relabeled phi symbol
PM *PM22 = new PM(LanguageModelFST, fst::MATCH_INPUT, RD.Relabel(PHI_SYMBOLID), false);

// the composition options

// do the composition
fst::ComposeFst<fst::LogArc> Input_Unk_Lex_LM(Input_Unk_Lex_OSort, LanguageModelFST, copts2);


The input labels of my language model fst are relabeled according to the relabler. Unfortunately the composition result only contains one start state.

Interestingly if I leave out the relabling of the PHI symbol and the Language model input arc, I get an almost complete composition result the only part missing are the last states wich are reached by a transition with <eps> on the output arc.

Examples for the fsts can be found in here: https://www.dropbox.com/sh/dt7jayrw8upw9dg/AACOS99CeBvnGkc2xbowQnMTa?dl=0

in_lex_lm: the composition result in_lex: the input fst (lexicon) lm: the output fst (relabeled ngram) lm.orig: lm without relabeling Relabeling.txt: the used label mapping

I would be happy if someone can help me with my problem. Is it possible that the phi matcher dois not work with the lookahead? I could not get my head around it but thinking about it, it seems quite complicated. How does the lookahed for the phi label behave?

Oliver

<--/commentPlugin-->

## Special arcs from the command line?

### StevenBedrick - 2014-12-01 - 17:34

Hello-

Is there any way to use phi, rho, or sigma arcs with the OpenFST command-line tools? I know it's possible using the C++ API, but it'd be lovely to be able to use them as easily as we currently use epsilon arcs with fstcompile and friends.

-SB

<--/commentPlugin-->

## Error when compile openfst 1.4.1

### NguyenHieu - 2014-11-23 - 23:49

I have compiled openfst 1.4.1 on ubuntu 13.10_64bit, every thing done well but when I use command: "fstinfo --help", it annouce error: "fstinfo: error while loading shared libraries: libfstscript.so.0: cannot open shared object file: No such file or directory". Anyone can help me to solve this problem

### DoganCan - 2014-11-24 - 21:27

Hi Nguyen,

Did you do the "make install" step? That would explain why this library can not be found on your system even if you did not specify a custom installation prefix during configuration.

Alternatively, if you specified an installation prefix during configuration, you may need to add that path to LD_LIBRARY_PATH.

Hope these help.

Cheers, Dogan

<--/commentPlugin-->

## Minimizing Transducers

### AnA - 2014-11-21 - 12:21

Is there a way to minimize a finite state transducer, s.t. the minimized transducer has the same input/output behavior as the original transducer?

Example:

0 1 1 1
0 1 0 1
1 2 0 0
1 2 1 0
2 1 1 0
2 1 0 0

(a.fsm)

For this example I would expect to get the following minimized transducer:

0 1 0 1
0 1 1 1
1 1 1 0
1 1 0 0


If I run

  fstcompile < a.fsm > b.fsm
fstminimize b.fsm > c.fsm

I get an empty transducer instead.

### DoganCan - 2014-11-24 - 21:10

Hi,

The reason you are getting an empty transducer is because your input transducer does not have any final states.

Looking at the minimization result you are expecting, I'm guessing your input should look like the following.

0 1 1 1
0 1 0 1
1 2 0 0
1 2 1 0
1
2 1 1 0
2 1 0 0
2


Cheers, Dogan

<--/commentPlugin-->

## Determinize. Is this a bug ?

### OlivierB - 2014-10-06 - 06:50

Hi,

When I determinize this small (5 states, 7 arcs) Finite state recognizer, the resulting finite state machine is made of 48653930 states and 72980894 arcs and use 1.7 G of disk space.

Is this really the expected behaviour ? If so, can someone give me an explanation for this ? Thanks, Olivier

<verbatim> 0 1 1 1 10 0 3 1 1 10 1 2 2 2 10 1 2 1 1 1 3 1 1 1 3 4 2 2 4 3 1 1 </verbatim>

### OlivierB - 2014-10-06 - 06:59

New try, here is the input FST, with hopefully better formating :

0 1 1 1 10 <br>

0 3 1 1 10 <br>

1 2 2 2 10 <br>

1 <br>

2 1 1 1 <br>

3 1 1 1 <br>

3 4 2 2 <br>

4 3 1 1 <br>

### CyrilAllauzen - 2014-12-01 - 17:35

This is indeed the expected behaviour. In theory, the algorithm should not terminate but it converges due to floating point issues. The reason for that is that your machine does not have the twins property so there is no guaranty that the algorithm terminates. You can read more about this in the references on the determinize page. If you are really interested in the subject, you can also look at Daniel Kirsten's paper: your machine is polynomially ambiguous and does not have the clone property, so the determinization algorithm will not terminate.

### KennethRBeesley - 2015-08-28 - 18:15

It would be very convenient (for me at least) if the OpenFst library included a boolean HasTwinsProperty(A) function that would return true if and only if FST A had that property. Before trying to determinize any FST with cycles, OlivierB and I could simply call HasTwinsProperty(A) to make sure that the algorithm would terminate. (I.e., I'm not suggesting that OpenFst itself should routinely call HasTwinsProperty(A) and store the result in the properties of each FST. I know that it's a rather expensive test to perform. Rather, it would just be available for end-users like me to call explicitly when we need to know.)

<--/commentPlugin-->

## FST Permute ?

### SriramVenkatapathy - 2014-08-20 - 11:04

I remember using a python library sometime in 2009 (it was the AT&T version i think) which had a function to permute an FST given the window of permutation. I don't find it in OpenFst, neither can I find again the AT&T library that had this function. Does any have any pointers ?

<--/commentPlugin-->

## Problems using farcompilestrings and far_reader?

### EstherJudd - 2014-08-09 - 13:11

I am trying to create pronunciations for a long list of words to evaluate the g2p module. I figured the fastest way to do it is to create a FAR archive of all the words and then in c++ compose each FST in the FAR archive with the trained g2p model FST. But I am running into trouble with extracting each FST in c++. It says it finds a bad FST header <unspecified>.

Does anybody have similar code that I can derive from? Or tell me the correct flags to compile the FAR archive? Right now I use farcompilestrings --symbols=en.isyms --keep_symbols=1 test.txt test.far

The c++ code is borrowed from /usr/local/include/thrax/evaluator.h

### EstherJudd - 2014-08-17 - 02:01

I got a little bit further here because I found out I forgot to include /usr/local/include/libfstfarscripts.so as a linker file (I did hav libfstfar.so but that wasn't enough. Now I am stuck with the call to the function ReassignSymbols which is defined in thrax/evaluator.h. It says it has not been declared in the scope of main(). I added #include <thrax/evaluator.h> to the .cc file but that is not enough. What is the best way in c++ to include a function defined in a header file like that?

### PaulDixon - 2014-08-18 - 06:33

How about this? https://gist.github.com/edobashira/8183f3ef2e7431345241 It composes the model FST with every FST in the input FAR file and writes the output to another FAR file. For farcompilestrings I just used the symbols flags and the program assumes none of the FSTs have symbols tables and everything is in the tropical semiring.

I'm compiling on OSX 10.9 so you might need slightly different compiler switches for your platform

### EstherJudd - 2014-08-19 - 14:08

Thanks, I was able to compile the program on Ubuntu by slightly changing the Makefile. I have one question though, how do you do it with symbol tables? The input far has only letters and the model fst goes from letters to phonemes, so the output is phonemes.

### PaulDixon - 2014-08-19 - 15:22

If the symbol table in the far file and the letter symbol table of the g2p model are the same then compose won't throw an error and everything should just work.

### EstherJudd - 2014-08-19 - 15:45

The problem is that when you compile a far file, the symbol table only is added to the first FST and you have to make sure you transfer it to the rest. I have been trying to use code from thrax/evaluator.h to use a function called ReassignSymbols but haven't figured out quite how to pull that off yet.

### PaulDixon - 2014-08-20 - 02:05

OK, how about just compiling the far --keep_symbols=false and compile the model --keep_isymbols=false

### EstherJudd - 2014-08-20 - 03:02

I will give that a try.

### EstherJudd - 2014-08-20 - 07:13

That was it! Thanks so much for your help. Now I just have to figure out how to extract the output strings into a text file but that shouldn't be too hard.
<--/commentPlugin-->

## fstcompile to fstdraw

### AndreSchlichting - 2014-07-25 - 11:09

Is it possible to compile to draw a fst that has this format?

0   1   3005   0   4.71582,57,115
0   2   3783   0   0,57,115
0   3   0      1   -2.39746,71,347
...


I mean because of the weights: Tks.

### DoganCan - 2014-07-25 - 16:21

Hi Andre,

Maybe something like this?

Cheers, Dogan

<--/commentPlugin-->

## Double Weighted arcs with composition lookahead filter

### DominicHowell - 2014-07-25 - 06:00

Hi I am using the additional lattice4 library to provide two-weighted arcs. It works great but I am having a problem using the composition lookahead filter on WFSTs of the lattice4 arc type. I was just wondering if anyone had ever used composition filters on WFSTs with user-defined weights? Any help would be much appreciated.

### PaulDixon - 2014-07-29 - 16:09

Try this (taken from matcher-fst.h)
typedef MatcherFst<ConstFst<KaldiLatticeArc>,
FastLogAccumulator<KaldiLatticeArc> >,


And for shell tools building this into the shared object (from extensions/lookahead/olabel_lookahead-fst.cc) compile this into the lattice4 shared object code

 static FstRegisterer<KaldiLatticeOLabelLookAheadFst>

<--/commentPlugin-->

### AlexZatv - 2014-07-22 - 16:21

Hello! I am using Determinize on VectorFst, in multi-threaded program, in OpenFst port for Windows. But, unfortunately, sometimes it fails. May be someone here have experience in multithreading in OpenFst and can help?

<--/commentPlugin-->

## Deleting a specific arc in an FST

### VinodhR - 2014-06-25 - 17:55

Hi,

I am iterating all the arcs of an FST.


for(StateIterator<VectorFst <StdArc>>; siter(fstnew); !siter.Done(); siter.Next()) {
for(MutableArcIterator<VectorFst <StdArc> > aiter(&fstnew,siter.Value()); !aiter.Done(); aiter.Next()) {
StdArc arc = aiter.Value();

<<delete current arc>>
}
}



I see that DeleteArcs has been overloaded with an additional parameter n. What does this n refer to ?

How do I delete the current arc that is being iterated ? or for that matter any specific arc in an FST ?

V

### DoganCan - 2014-06-25 - 21:06

Hi Vinodh,

OpenFst does not provide a convenience method for deleting specific arcs from a VectorFst. I believe this has to do with the fact that these arcs are kept in a std::vector and the erase operation is inefficient for this data type, i.e. erasing an entry from a std::vector is linear in the size of the vector. As a workaround, you can construct a new fst, which includes only the arcs you want to keep, while iterating through the arcs of the original.

You can use DeleteArcs to delete all arcs at a state or the last n arcs added to a state.

Cheers, Dogan

<--/commentPlugin-->

## Using fstreplace after fst composition

### AndreSchlichting - 2014-06-24 - 16:07

Is it possible to use fstreplace tool in FSTs after composing them with some other FSTs?

For example, I have a grammar G with some symbols I want to replace later in it, let's say, S1 and S2. I have also a lexicon L. The symbols S1 and S2 have two other grammar FSTs GS1 and GS2.

I am trying:

fstcompose L G > LG

fstcompose L GS1 > LGS1

fstcompose L GS2 > LGS2

fstreplace LG 'label' LGS1 'label1' LGS2 'label2' > LG1

But this is getting a lot different if I do:
fstreplace G 'label' GS1 'label1' GS2 'label2' > G2

fstcompose L G2 > LG2

LG2 is correct, I can use it for my purposes, but I can't make it right the first way, any idea why?

### DoganCan - 2014-06-25 - 03:37

Hi Andre,

There were a few inconsistencies in your example commands. I edited your question and tried to fix them to the best of my understanding. Please check the question and confirm that the example commands match your case.

The most likely reason why LG1 and LG2 differ is because G includes arcs labeled with S1 and S2 while L does not. When you compose L with G, the paths in G which contain S1 and S2 do not match any path in L. I believe you can handle these symbols by adding two simple loops to L, e.g. assuming 0 is both the initial state and a final state of L, you would add

0 0 <eps> S1
0 0 <eps> S2

These loops will match S1 and S2 during composition, hence preserve the paths which include these symbols in LG.

Cheers, Dogan

### AndreSchlichting - 2014-06-25 - 08:10

Actually L contains the symbols S1 and S2 exactly like you sugested.

0   1   <eps>   <eps>   0.693147182
0   2   sil   <eps>   0.693147182
1   4   <eps>   S1
1   5   <eps>   S2
1   1   sil   _silence_
1   6   k   w6
1   12   d   w3
1   1   o^   w1   0.693147182
1   3   o^   w1   0.693147182
1   15   g   w5
1   18   t   w2
1   21   t   w4
1   1   #0   #0
1
2   1   #3   <eps>
3   2   sil   <eps>
4   1   #1   <eps>   0.693147182
4   3   #1   <eps>   0.693147182
5   1   #2   <eps>   0.693147182
5   3   #2   <eps>   0.693147182
6   7   a   <eps>
7   8   x   <eps>
8   9   o^   <eps>
9   10   R   <eps>
10   11   o   <eps>
11   1   S   <eps>   0.693147182
11   3   S   <eps>   0.693147182
12   13   o^   <eps>
13   14   i   <eps>
14   1   z   <eps>   0.693147182
14   3   z   <eps>   0.693147182
15   16   a'   <eps>
16   17   t   <eps>
17   1   S   <eps>   0.693147182
17   3   S   <eps>   0.693147182
18   19   e^   <eps>
19   20   N   <eps>
20   1   o_   <eps>   0.693147182
20   3   o_   <eps>   0.693147182
21   22   r   <eps>
22   23   e^   <eps>
23   1   S   <eps>   0.693147182
23   3   S   <eps>   0.693147182


The symbols S1 and S2 will still be in LG after composition because I want to replace them later, isn't it correct? But in fact GS1 and GS2 do not contain the symbols S1 and S2. They are instead what I want to use to replace later.

G

0   1   #0   <eps>   227.955917
0   4   w1   w1
1   2   S1   S1   1.60943794
1   3   S2   S2   1.60943794
1   4   w1   w1   1.60943794
1   5   w2   w2   1.60943794
1   1.60943794
2   1   #0   <eps>   227.955917
2
3   1   #0   <eps>   227.955917
3   2   S1   S1
4   1   #0   <eps>   227.955917
4   5   w2   w2
5   1   #0   <eps>   227.955917
5   3   S2   S2


GS1

0   1   #0   <eps>   16.534359
0   2   w6   w6   0.693147182
0   3   w5   w5   0.693147182
1   2   w6   w6   1.38629436
1   3   w5   w5   1.38629436
1   0.693147182
2   1   #0   <eps>   227.955917
2
3   1   #0   <eps>   227.955917
3


GS2

0   1   #0   <eps>   16.534359
0   2   w3   w3   0.693147182
0   3   w4   w4   0.693147182
1   2   w3   w3   1.38629436
1   3   w4   w4   1.38629436
1   0.693147182
2   1   #0   <eps>   227.955917
2
3   1   #0   <eps>   227.955917
3


By the way, I use the option epsilon_on_replace with fstreplace.

Thanks.

### DoganCan - 2014-06-25 - 20:36

Hi Andre,

The difference is due to the structure of the lexicon. There are two issues as far as I can tell.

1. The loops for handling S1 and S2 symbols are introducing extra disambiguation and silence symbols on the input side. As a result, LG1 will always include these extra symbols on its input side. On the other hand, G2 does not include S1 and S2 symbols. Hence these dummy loops are never traversed while composing L with G2. Make sure these dummy paths do not introduce extra symbols on the input side.
2. An optional silence is allowed at the beginning. These optional silences will make their way through to LGS1 and LGS2 and create additional silence symbols on the input side of LG1. You might want to use a slightly different lexicon, which does not allow these extra silences at the beginning, while constructing LGS1 and LGS2.

Cheers, Dogan

<--/commentPlugin-->

## Phi-matcher in PDT

### AntoineRaux - 2014-06-23 - 20:04

Is it possible to use specialized matchers in a PDT? Specifically, I want to create a PDT from an RTN (using pdtreplace) where some of the FSTs in the RTN have phi transitions. Is this possible with the current version of the pdt extension, and if so how?

### BenSnyder - 2014-08-14 - 12:43

I've been grappling with this questions too. I've created a PhiParenMatcher class (inheriting from PhiMatcher with the <M> template specialized to be a PDT ParenMatcher). The main problem is that the phi match fails when the destination state of the phi arc doesn't have an explicit match to the requested match_label, but does have a non-consuming match. This commonly happens in a PDT because the destination state has outgoing arcs labelled with parentheses, which are non-consuming and treated analogously to epsilons.

In fact, I think this is a more general problem with the PhiMatcher, even with a standard FST -- the phi match doesn't work properly when the destination state of the phi arc has an outgoing epsilon arc. I will update if I come up with a solution.

<--/commentPlugin-->

## Encoding and composing a character-to-token lexicon transducer with UNKs

### AaronDunlop - 2014-06-19 - 17:12

Is there a relatively standard or straightforward way to build a lexicon transducer (i.e., a character-to-token transducer) which handles unknown words, outputting an appropriate UNK symbol? The lexicon examples at http://www.openfst.org/twiki/bin/view/FST/FstExamples are pretty straightforward, and we can extend the lexicon script to construct a trie transducer for an arbitrary corpus (and handle spaces as word delimiters). But the transducer can't rewrite input that includes unobserved words.

My intuition is that generalizing further to handle UNKs would be similar to encoding a language model with backoff transitions (Allauzen et al., 2003). But I'm confused about the exact encoding, and how to compose the resulting transducer with other transducers in a chain, using the appropriate matchers (my guess is we want either a phi or a rho matcher, but I'm not certain which).

For example, consider a system consisting of 3 transducers: * F: A transducer which passes through all characters unchanged, or collapses sequences of repeated characters at some cost. (Note that this transducer is not deterministic, since it doesn't require that a repeated sequence be collapsed).<br> * G: Character-to-token lexicon transducer<br> * H: Word-level n-gram model<br>

In theory, H(G(F(x))) would normalize input text, deleting duplicated characters as appropriate (e.g., if the character-deletion costs and language model probabilities balance properly, it might change 'pair off access' to 'pair of aces' but leave 'turn off access' unchanged).

F will naturally include arcs with epsilon outputs to delete duplicate characters. But it seems like those epsilon outputs aren't semantically the same as the epsilon inputs in H that encode LM backoffs, or likely to analogous epsilon inputs in G. Both compositions (F o G) and (F o G) o H will require handling backoff arcs. That means we need to use a phi or rho matcher, correct? Can we perfom these compositions with the command-line fstcompose tool? Or does phi/rho matching require custom C++ code?

Of course, we could avoid the problem by using a character-level language model instead (in which case we'd only need 2 transducers, and could let OpenGRM encode the LM backoffs), but I'd like to incorporate the longer distance dependencies of a word-level model.

If there are standard tools to do this that I'm missing, I'd love pointers. Thanks in advance.

### DoganCan - 2014-06-19 - 22:54

Hi Aaron,

I'm not quite sure about the exact transduction you are looking for. Is the following an accurate description of what you have in mind?

1. Input is a sequence of characters where word boundaries are marked with whitespace characters, i.e. there is no confusion about where one word starts and ends.
2. Characters may repeat and deleting repeated characters by paying its cost is OK.
3. There may be character sequences which can not be mapped to any word in the vocabulary even after character deletion. These should be mapped to UNK.

Could you give an example input and the desired output? Ideally something which covers all above cases.

Cheers, Dogan

### AaronDunlop - 2014-06-20 - 19:09

Dogan,

I'm specifically interested in the character-to-token (lexicon) transducer that handles unknown words. The duplicate-deletion transducer is an example of a character-level transducer I might combine with it (the transducer I'm working with currently learns character-level mutations from data, and I want to support other character transducers as well, such as something hand-coded in Thrax).

To combine any of those character transducers with a word-level language model, I need a lexicon transducer in between.

So a trivial example chain (that only handles the word 'it') might be:

1. A character-mutation transducer including i:i and t:t pass-through arcs (at 0 cost), and t:<eps> at some cost

2. A lexicon which accepts i t <space> and outputs 'it'. (sorry, I can't figure out how to include images for these transducers). If any character other than 'i' appears at the start state, it should take a failure transition to an UNK state (at some cost); similarly for any character other than 't' in the 'i' state; the UNK state would have a self-loop for any character other than <space>, and an arc for <space> back to the start, outputting <unk>.

I can create transducer 2 with explicit arcs for all characters in the vocabulary, but of course that's very large for a sizable (word) vocabulary (millions of arcs). So it's impractical to compose with the language model (And it would presumably be much larger if we handled characters outside of the English ASCII range). I know language models use failure arcs to avoid encode backoff transitions compactly. My intuition is that a lexicon with UNK support would look similar. But I haven't figured out how to do that encoding, or what matchers to use (if a specific matcher is needed) for composition and inference. I probably need to go back and read Cyril, Mehryar, and Brian's 2003 language modeling paper in more detail. But it seemed like a problem that might already have been solved.

Did that help clarify my question at all?

Thanks, Aaron

### DoganCan - 2014-06-20 - 21:54

Hi Aaron

Does the following lexicon for the vocabulary {man, mars} match what you have in mind? Note that phi matches rest of symbols but does not consume any symbols, while rho matches rest of symbols and consumes a symbol.

Cheers, Dogan

### DoganCan - 2014-06-21 - 07:05

Hi Aaron,

I just pushed an example setup to github at the address

It includes a simple script for constructing the lexicon and a rudimentary fst composition tool with phi and rho matching on the input side of the second (right-hand) input fst.

Cheers, Dogan

### EvaHasler - 2015-08-11 - 11:27

Hi Dogan

I have a question that is related to your example from above. I am using your example to set up a rho matcher and it works fine. However, when the second lattice also contains arcs with epsilons as input symbols, it does not work: FATAL: ComposeFst: 2nd argument requires matching but cannot.

How do I fix it to be able to compose with epsilons as well?

Thanks, Eva

<--/commentPlugin-->

## Compile openfst 1.4.1 on 64-bit Ubuntu VM?

### EstherJudd - 2014-06-17 - 12:26

When I try to compile openfst on Ubuntu everything seems to compile just fine. But then I try to run a program such as fstinfo and I get the following error:

fstinfo: error while loading shared libraries: libfstscript.so.1: cannot open shared object file: No such file or directory

I have tried configuring with --enable-shared on, I have tried downgrading from gcc 4.8.2 to gcc-4.4. There seems to be no difference. The libraries are installed in /usr/local/lib/fst. I have even tried adding the directory to the path in my bash login-script. What else can I do?

### PaulDixon - 2014-06-17 - 16:07

Have you tried adding /usr/local/lib/ to the LD_LIBRARY_PATH environment variable?

### EstherJudd - 2014-06-17 - 17:22

That helped. Dumb of me to not think of that. Now I'm just grappling with compiling thrax. I get an internal compiler error whenever I try.

### PravinBhosale - 2015-10-21 - 02:47

how to add LD_LIBRARY_PATH environment variable
<--/commentPlugin-->

## Is there a simple way to add weighted arcs from final nodes to initial node?

### JihoonKim - 2014-06-09 - 00:50

I have an FST which has more than 10000 final nodes. I'd like to add weighted arcs from these final nodes to initial node. Closure operation seems not to support weighted arcs. Is there any simple way to do that?

### JihoonKim - 2014-06-09 - 04:03

To clear up, I want the arcs with epsilon input/output.

### PaulDixon - 2014-06-09 - 13:32

template<class Arc>
void AddFinalStartArc(MutableFst<Arc> *fst, typename Arc::Weight weight) {
typedef typename Arc::Weight Weight;
for (StateIterator<Arc> siter(*fst); !siter.Done(); siter.Next())
if (fst->Final(siter.Value()) != Weight::Zero())
}

<--/commentPlugin-->

## Compile error OpenFST 1.4.1

### RolandSchwarz - 2014-05-22 - 08:22

Hi, I'm trying to install the latest version on Windows using Cygwin. All previous versions that I tried (last was 1.3.3) compiled without problems. In this version I get the following compile error:

/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./../include -std=c++0x -MT determinize.lo -MD -MP -MF .deps/determinize.Tpo -c -o determinize.lo determinize.cc libtool: compile: g++ -DHAVE_CONFIG_H -I./../include -std=c++0x -MT determinize.lo -MD -MP -MF .deps/determinize.Tpo -c determinize.cc -DDLL_EXPORT -DPIC -o .libs/determinize.o as: .libs/determinize.o: too many sections (45066) /tmp/ccUSIrLz.s: Assembler messages: /tmp/ccUSIrLz.s: Fatal error: can't write .libs/determinize.o: File too big as: .libs/determinize.o: too many sections (45066) /tmp/ccUSIrLz.s: Fatal error: can't close .libs/determinize.o: File too big Makefile:390: recipe for target 'determinize.lo' failed

Any idea what has changed that it doesn't compile anymore? From what I understand there is little I can do on my side to make it work? Any help appreciated as usual.

Thanks,

Roland

### PaulDixon - 2014-05-24 - 14:59

I saw a similar error about too many segments when compiling version 1.4.1 on Visual Studio. In VS there is a switch /bigobj that worked for me but there doesn't seem to be an equivalent for Cygwin. You could try compiling without debugging information to try reduce the file size. I'm not familiar with Cygwin but would using a 64bit compiler help? http://mingw-w64.sourceforge.net/

You also try using the VS compiled version, I put a link to the solution in the contrib section. They should run fine under Cygwin

### DanielPovey - 2014-05-24 - 15:38

Someone reported on the Kaldi forum that if you configure with --enable-static --disable-shared , it works.

### DanielPovey - 2014-05-28 - 15:00

Kaisheng Yao posted this to kaldi-users:

I found the following link http://stackoverflow.com/questions/16596876/object-file-has-too-many-sections It is related to using template. Another way to resolve this is turning on optimization. In my case I use

EXTRA_CXXFLAGS += -Wno-sign-compare -O1 in src\lat\Makefile

I therefore changed the following in src\kaldi.mk and compilation was successful after this change

CXXFLAGS = -msse -msse2 -Wall -I.. -DKALDI_DOUBLEPRECISION=0 -fPIC -DHAVE_POSIX_MEMALIGN -DHAVE_CLAPACK -I ../../tools/CLAPACK/ -Wno-sign-compare -Winit-self -I ../../tools/CLAPACK/ -I $(FSTROOT)/include$(EXTRA_CXXFLAGS) -O1

### ChristopherBader - 2014-09-19 - 15:13

Just to clarify DP's comment:

--enable-static --disabled shared does NOT work

Turning on C++ optimization DOES work.

Put CXXFLAGS="-O" at the end of the configuration command, e.g.

./configure CXXFLAGS="-O"

<--/commentPlugin-->

## Multiple score on the arc...?

### ZeeshanAhmed - 2014-04-08 - 15:41

Hi, Is it possible to define multiple scores on the arcs? e.g. acoustic and language modeling scores at the same time. Would determinization and minimization algorithms work in this situation as is?

Thanks.

### PaulDixon - 2014-04-09 - 05:09

Yes to both. This is described in the OpenFst paper http://openfst.org/twiki/pub/FST/FstBackground/ciaa.pdf. Kaldi also has a LatticeWeight type which will do exactly what you want. Here is minimal standalone example that will build an OpenFst shared object and enable the type in the shell tools. https://gist.github.com/edobashira/10244848

### ZeeshanAhmed - 2014-05-10 - 12:37

Hi Paul, I compiled the standalone version on openfst.1.3.4. However, I am getting the following error when run the following test command. Can you help me what could be the problem?
\$ fstcompile --arc_type=lattice4 test.txt ERROR: GenericRegister::GetEntry : lookup failed in shared object: lattice4-arc.so FATAL: No operation found for "CompileFst" on arc type lattice4

### DoganCan - 2014-05-11 - 19:06

Hi Zeeshan,

Did you build the shared object lattice4-arc.so using Paul's gist? It seems like it is not in the working directory or in the dynamic library search path LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on OS X).

Cheers, Dogan

### ZeeshanAhmed - 2014-05-13 - 17:57

Hi Dogan,

Thanks for the reply. It worked fine on pure Linux system but on cygwin it's not working though the lattice4-arc.dll is in the working directory. The problem is that on cygwin shared libraries for openFst are not built. Any idea on how to build openFst shared libraries on cygwin?

Thanks, Zeeshan

### DoganCan - 2014-05-13 - 18:26

Hi Zeeshan,

I have no idea how things work under cygwin. That being said, are you sure your problem is related to shared libraries not being built? I think your problem might have to do with the shared object file being named lattice4-arc.dll instead of lattice4-arc.so. Try renaming that file to lattice4-arc.so. If that does not work, try lattice4-arc.so.dll. Good luck.

Cheers, Dogan

<--/commentPlugin-->

## Error installing openGRM on Mac 10.9.2

### SepidehA - 2014-04-05 - 13:38

Hi all, I have installed OpenFST successfully on my mac 10.9.2 with --enable-far. But then when I want to configure my OpenGRM for installing I get " checking fst/fst.h usability... no checking fst/fst.h presence... no checking for fst/fst.h... no configure: error: fst/fst.h header not found" but my fst.h is there in /usr/local/include any ideas?

Thanks

### CyrilAllauzen - 2014-04-07 - 14:53

Hi,

It seems this is due by Apple changing the default C++ standard library in the latest version of Xcode (version 5).

CXX=-stdlib=libstdc++ ./configure
should fix this.

### EstherJudd - 2014-05-07 - 13:03

I have the same problem. The command above does not fix it. I had it working on a different machine previously but just started working on my iMac with 10.9.2 and the latest version of Xcode installed.

### PaulDixon - 2014-05-08 - 01:15

The latest c++11 version of OpenFst (1.4.1) and OpenGrm Ngram (1.21) should just compile without any extra flags or environment variables.

### EstherJudd - 2014-05-08 - 11:43

Then why when I run ./configure do I get the following messages? fat binaries are installed in /usr/local/bin and it is in my path

checking fst/fst.h usability... no checking fst/fst.h presence... no checking for fst/fst.h... no configure: error: fst/fst.h header not found

### AaronDunlop - 2014-05-08 - 16:10

Here's what worked for me on Mavericks (10.9.2)

In the extracted opengrm-ngram-1.2.1 directory:

# Replace imports of 'unordered_map' with 'tr1/unordered_map' perl -pi -e 's#<unordered_map>#<tr1/unordered_map>#' src/include/ngram/ngram-shrink.h src/include/ngram/ngram-marginalize.h src/include/ngram/ngram-count.h

# Configure with Clang arguments ./configure --prefix=/usr/local CXX="clang++ -std=c++11 -stdlib=libstdc++"

make sudo make install

Note: To configure OpenFST, I used:

./configure --prefix=/usr/local --enable-compact-fsts --enable-const-fsts --enable-far=yes --enable-lookahead-fsts --enable-pdt CXX="clang++ -std=c++11 -stdlib=libstdc++"

Of course, your mileage may vary. But maybe someone will find that helpful.

### CyrilAllauzen - 2014-05-12 - 10:55

Aaron: My original message was about compiling OpenGrm NGram 1.1.x. With version 1.2.1, you shouldn't need to -stdlib=libstdc++. Have you tried compiling without it?

Esther: Could you clarify which version of OpenFst and OpenGrm NGram you were using? Which version of Xcode? Also could you look at config.log and see if you're seeing anything suspicious there. Also, if you've recently installed Xcode5, you might need to accept the license: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept.

### AaronDunlop - 2014-05-14 - 17:59

Cyril: Compiling OpenFST without -stdlib=libstdc++ seems to work, but configuring OpenGRM without that flag fails.

### AliceWalton - 2014-06-13 - 00:41

I have the same problem when I try to configure Thrax. It shows configure: error: fst/fst.h header not found Using the flag CXX="clang++ -std=c++11" does not fix it.

In OpenFst, if I configure with CXX="clang++ -std=c++11 -stdlib=libstdc++" as suggested by Aaron, I got a fatal error of unordered_map not found. Well I can configure and install OpenFst without this flag but I cannot configure Thrax.

Thank you very much for your help.

### JatishKhanna - 2015-09-26 - 05:33

In short: 1. Install - openfst-1.5.0 or higher version http://www.openfst.org/twiki/bin/view/FST/WebHome

2. Set the LD_LIBRARY_PATH=/usr/local/bin [all the library *.so by default to be installed ]

3. Clean up if already tried [ make clean ]

4. Try installing it back [make && make install]

walah Done

<--/commentPlugin-->

## Intersection gives a FATAL error

### ErikAxelson - 2014-03-07 - 04:03

Hi all,

I have two transducers with no symbol tables:

0       0       9      9      0
0       0       6      6      0
0       1       8      8      0
0       1       7      7      0
0       1       3      3      0
1       1       9      9      0
1       1       6      6      0
1       2       8      8      0
2       2       9      9      0
2       2       6      6      0
2       3       4      4      0
3       3       9      9      0
3       3       6      6      0
3       3       8      8      0
3       3       7      7      0
3       3       3      3      0
3       4       5      5      0
4       4       9      9      0
4       4       6      6      0
4       5       8      8      0
5       5       9      9      0
5       5       6      6      0
5       6       8      8      0
5       6       7      7      0
5       6       3      3      0
6       6       9      9      0
6       6       6      6      0
6       0


and

0       0       5      5      0
0       0       4      4      0
0       1       3      3      0
1       2       6      6      0
2       3       5      5      0
2       3       4      4      0
2       2       3      3      0
2       4       9      9      0
2       2       8      8      0
2       2       7      7      0
3       3       5      5      0
3       3       4      4      0
3       2       3      3      0
3       2       8      8      0
3       2       7      7      0
4       4       5      5      0
4       4       4      4      0
4       5       3      3      0
5       5       5      5      0
5       5       4      4      0
5       0


When I try to intersect them (t1 is the first transducer and t2 the second):

    RmEpsilon(t1);
RmEpsilon(t2);

ArcSort(t1, OLabelCompare<StdArc>());
ArcSort(t2, ILabelCompare<StdArc>());

EncodeMapper<StdArc> encoder(kEncodeLabels,ENCODE);
EncodeFst<StdArc> enc1(*t1, &encoder);
EncodeFst<StdArc> enc2(*t2, &encoder);

IntersectFst<StdArc> intersect(enc1, enc2);


I get an error message "FATAL: ComposeFst: 1st argument cannot match on output labels and 2nd argument cannot match on input labels (sort?)."

What am I doing wrong?

### PaulDixon - 2014-03-08 - 09:10

You need to sort the encoded fsts before the intersection.

### ErikAxelson - 2014-03-12 - 04:50

It seems that using Encode instead of EncodeFst solves the problem, because then I'm able to sort the arcs before intersection:

Encode<StdArc>(t1, &encoder); Encode<StdArc>(t2, &encoder);

ArcSort(t1, OLabelCompare<StdArc>()); ArcSort(t2, ILabelCompare<StdArc>());

IntersectFst<StdArc> intersect(*t1, *t2);

<--/commentPlugin-->

## OpenFst website back up

### CyrilAllauzen - 2014-02-14 - 18:20

The OpenFst website was down for a few days due to some hardware issue. The site is back up but some things (such as the doxygen links) are not working properly yet. We're working on resolving the remaining issues.

<--/commentPlugin-->

### OliverAdams - 29 Jan 2014 - 21:09

I've built OpenFst in my home directory.

I'm aiming to compile the following toy code:

1 #include <fst/fstlib.h> 2 3 int main(void) { 4 fst::StdVectorFst fst; 5 }

So far I've run a number of commands that are variations of the following theme:

I get various undefined reference errors. I feel I should probably have append the commands with -l , but for the obvious variations I get errors along the lines of:

/usr/bin/ld: cannot find -lopenfst collect2: error: ld returned 1 exit status

How can I get it to compile? Any help would be greatly appreciated.

<--/commentPlugin-->

## Bug in weight-class.h: ConvertKeyToSoFilename() ?

### FedericoFlego - 26 Jan 2014 - 06:54

Hello,

I've got a problem running the fstprune binary with my user defined arc type.

It works fine if I do something like:

> fstprune myfst.fst > /dev/null

but if I do

> fstprune --weight=8 myfst.fst > /dev/null

I get

ERROR: GenericRegister::GetEntry : tropical_LT_tropical.so: cannot open shared object file: No such file or directory Segmentation fault

I believe this is due to function ConvertKeyToSoFilename() in weight-class.h:

virtual string ConvertKeyToSoFilename(const string &key) const { return key + ".so"; }

which should probably be:

virtual string ConvertKeyToSoFilename(const string& key) const { string legal_type(key); ConvertToLegalCSymbol(&legal_type);

return legal_type + "-arc.so"; }

Thanks a lot for your feedback!

Federico

### DoganCan - 27 Jan 2014 - 03:19

Hi Federico,

I believe, you need a shared object for your user defined weight type (see attached code) as well. Make sure the the DSO is named tropical_LT_tropical.so and put it somewhere dlopen can find.

Also, you will get the following error with that fstprune call since 8 can not be parsed as a pair weight.

fstprune --weight=8 test.fst > /dev/null
FATAL: StrToWeight: Bad weight = "8", source = WeightClass, line = 0


fstprune --weight=8,0 test.fst > /dev/null


Cheers, Dogan

#include <fst/arc.h>
#include <fst/script/weight-class.h>

using namespace fst;

namespace fst {
namespace script {
REGISTER_FST_WEIGHT(LexicographicWeight<TropicalWeight, TropicalWeight>);
}
}


### FedericoFlego - 27 Jan 2014 - 08:40

Thanks a lot Dogan!

Actually I've got the shared object (named tropical_LT_tropical-arc.so) which is loaded correctly when I do for example fstprint. I see in the code DSOs are generally loaded adding the suffix -arc:

legal_type + "-arc.so"

It's only in src/include/fst/script/weight-class.h

that the suffix is not added. After changing function ConvertKeyToSoFilename() in weight-class.h from:

  virtual string ConvertKeyToSoFilename(const string &key) const {
return key + ".so";
}


to:

  virtual string ConvertKeyToSoFilename(const string &key) const {
//return key + ".so"; //ff257: is this a bug?
string legal_type(key);
ConvertToLegalCSymbol(&legal_type);

return legal_type + "-arc.so";
}


it worked fine. Thanks for confirming that I need to add REGISTER_FST_WEIGHT. I didn't do it initially be