I just remembered something. The issue could be that the importer you're trying to use does not have the new interface and instead still uses the old (legacy) interface.

the new one looks like this


def extract(self, file, existing_entries):

the old one looks like this

def extract(self, file):


Smart importer uses the existing_entries for training its model.


Regards,

Patrick




On 12.05.2021 12:20, [email protected] wrote:
Just checked and I got the same result. I can add some debugging code in the config file perhaps. I'm not very experienced with beancount or smart_importer so not sure what to look for.

bean-extract -e journal/accounts.beancount jonathan_smart.import ~/staging/mydata.qfx  > ~/staging/dud.txt

gives 2 printouts of

Cannot train the machine learning model because the training data is empty.

Cannot train the machine learning model because the training data is empty.

On Wednesday, May 12, 2021 at 7:15:19 PM UTC+12 [email protected] wrote:

    Can you try -e instead of -f that's what I use


    On May 12, 2021 8:31:36 AM GMT+02:00, "[email protected]"
    <[email protected]> wrote:

        Thanks for the suggestion @Patrick. I just tried changing that
        but still doesn't work. I get the exact same behavior if I
        call it with an empty file....seems the -f option doesn't make
        bean-extract behave as expected for me. Here is my call:

        bean-extract -f journal/myledger.beancount
        jonathan_smart.import ~/staging/62090_818496_1013051ofxdl.qfx 
        > ~/staging/dud.txt

        I get these messages:

        Cannot train the machine learning model because the training
        data is empty.

        Cannot train the machine learning model because the training
        data is empty.


        On Wednesday, May 12, 2021 at 5:31:25 PM UTC+12
        [email protected] wrote:

            Hi,

            I think your setup looks good, the smart importer hook is
            in there as otherwise you would not get the errors about
            not able to train.

            I think the issue is on your call


            bean-extract jonathan_smart.import
            ~/staging/new_bank_data.qfx -f journal/myledger.beancount
            > ~/staging/dud.txt


            My guess is that the -f argument needs to come before you
            specify the importconfig and the location, so


            bean-extract -f journal/myledger.beancount
            jonathan_smart.import ~/staging/new_bank_data.qfx >
            ~/staging/dud.txt


            Regards,

            Patrick


            On 12.05.2021 01:58, [email protected] wrote:
            Thanks for looking at this module even though you aren't
            using it!

            I followed the code that was further down on the readme
            page <https://github.com/beancount/smart_importer> that
            describes how to convert an existing importer.
            >>
            from your_custom_importer import MyBankImporter
            from smart_importer import apply_hooks, PredictPayees,
            PredictPostings

            my_bank_importer = MyBankImporter('whatever', 'config',
            'is', 'needed')
            apply_hooks(my_bank_importer, [PredictPostings(),
            PredictPayees()])
            CONFIG = [ my_bank_importer, ]
            >>
            (my code looks just like this example)

            I had thought apply_hooks would operate on the importer
            so when I call it in config I can just then call the
            hookified bank_importer. Is this note the case?

            On Wednesday, May 12, 2021 at 1:26:27 AM UTC+12
            [email protected] wrote:

                * Disclaimer * I have never actually run smart importer.

                Looking at the README on GitHub for smart importer it
                looks like you need to use the return object of
                apply_hooks in your CONFIG list.

                CONFIG = [
                apply_hooks(MyBankImporter(account='Assets:MyBank:MyAccount'),
                [PredictPostings()]) ]

                In your config you apply the hooks but are not using
                the returned object.

                Hope that helps.

                On Tuesday, 11 May 2021 at 04:06:33 UTC+1
                [email protected] wrote:

                    Hi,

                    I'm trying to get smart_importer to work and not
                    sure what I'm doing wrong.

                    *_1_*. I successfully have done all the required
                    beancount setup and created by own bank importer
                    and ran it on two months of data.
                    _*2.*_ I then manually labelled about 2 months of
                    data from one of my banks.
                    *_3._* I installed smart_importer using "pip
                    install smart_importer"

                    (base) MacBook-Air:beandata jonathan$ pip show
                    smart_importer

                    Name: smart-importer

                    Version: 0.3

                    Summary: Augment Beancount importers with machine
                    learning functionality.

                    Home-page:
                    https://github.com/beancount/smart_importer
                    <https://github.com/beancount/smart_importer>

                    Author: Johannes Harms

                    Author-email: UNKNOWN

                    License: MIT

                    Location:
                    /Users/jonathan/opt/miniconda3/lib/python3.8/site-packages

                    Requires: scikit-learn, beancount, numpy, scipy

                    *_4._* I created a new config file I called
                    Jonathan_smart.import


                    base) MacBook-Air:beandata jonathan$ more
                    jonathan_smart.import

                    #!/usr/bin/env python3

                    """Import configuration."""


                    import sys

                    from os import path


                    sys.path.insert(0, path.join(path.dirname(__file__)))


                    from beancount_reds_importers import vanguard

                    from myimporters.bfsfcu import bfsfcu_bank

                    from myimporters.anz import anz_bank

                    from fund_info import *

                    from smart_importer import apply_hooks,
                    PredictPayees, PredictPostings


                    myBank_smart_importer =my_bank.Importer({

                            'main_account'   :
                    'Assets:US:Banks:Checking:myBank',

                            'account_number' : ''xxx'',

                            'transfer'       :
                    'Assets:US:Zero-Sum-Accounts:Transfers:Bank-Account',

                            'income'         :
                    'Income:US:Interest:myBank',

                            'fees'           :
                    'Expenses:US:Bank-Fees:myBank',

                            'rounding_error' :
                    'Equity:US:Rounding-Errors:Imports',

                        })


                    apply_hooks(myBank_smart_importer,
                    [PredictPayees(), PredictPostings()])

                    CONFIG = [myBank_smart_importer, ...(other
                    importers)]


                    *_5_*. I was following the README documentation
                    that said write bean-extract -f to invoke it on
                    existing data. So I tried the following.*Is this
                    right?*

                    bean-extract jonathan_smart.import
                    ~/staging/new_bank_data.qfx -f
                    journal/myledger.beancount > ~/staging/dud.txt

                    Cannot train the machine learning model because
                    the training data is empty.

                    Cannot train the machine learning model because
                    the training data is empty.


                    The output is just like the normal output without
                    all the smart_importer stuff.  Seems I'm doing
                    something wrong as the staging/dud.txt doesn't
                    have any predictions.


                    Appreciate any assistance on this!


                    thanks,

                    Jonathan

-- You received this message because you are subscribed to
            the Google Groups "Beancount" group.
            To unsubscribe from this group and stop receiving emails
            from it, send an email to [email protected].
            To view this discussion on the web visit
            
https://groups.google.com/d/msgid/beancount/820ef641-8178-47d1-9e97-afbc709e6a83n%40googlegroups.com
            
<https://groups.google.com/d/msgid/beancount/820ef641-8178-47d1-9e97-afbc709e6a83n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/fe28577c-8220-49cd-b976-40ef9f0b6a91n%40googlegroups.com <https://groups.google.com/d/msgid/beancount/fe28577c-8220-49cd-b976-40ef9f0b6a91n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/bf25b0f6-2cc6-f636-a444-5c36a32c39e0%40ch.tario.org.

Reply via email to